力扣(LeetCode)刷题,简单题(第8期)
生活随笔
收集整理的這篇文章主要介紹了
力扣(LeetCode)刷题,简单题(第8期)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
第1題:存在重復元素
第2題:2的冪
第3題:移動零
第4題:缺失數字
第5題:第一個錯誤的版本
第6題:按摩師
第7題:3的冪
第8題:求1+2+...+n
第9題:數值變為0的步數
第10題:有多少小于當前數字的數
力扣(LeetCode)定期刷題,每期10道題,業務繁重的同志可以看看我分享的思路,不是最高效解決方案,只求互相提升。
第1題:存在重復元素
試題要求如下:
回答(C語言):
int compare(const void *a, const void *b){return *(int*)a - *(int*)b;
}bool containsDuplicate(int* nums, int numsSize){qsort(nums, numsSize, sizeof(int), compare);for(int i = 0; i < numsSize - 1; i++){if(nums[i] == nums[i+1]){return true;}}return false;
}
運行效率如下所示:
第2題:2的冪
試題要求如下:
回答(C語言):
bool isPowerOfTwo(int n){while(n%2==0&&n>1){n=n/2;}if(n==1){return true;}else{return false;}
}
運行效率如下所示:
第3題:移動零
試題要求如下:
回答(C語言):
void moveZeroes(int* nums, int numsSize){for(int i=0,j = 0,temp=0; j < numsSize;++j) {if(nums[j] != 0) {temp = nums[i];nums[i] = nums[j];nums[j] = temp;++i;}}
}
運行效率如下所示:
第4題:缺失數字
試題要求如下:
回答(C語言):
int missingNumber(int* nums, int numsSize){int ans = numsSize*(numsSize + 1)/2, i;for(i = 0; i < numsSize; i++){ans -= nums[i];}return ans;
}
運行效率如下所示:
第5題:第一個錯誤的版本
試題要求如下:
回答(C語言):
// Forward declaration of isBadVersion API.
bool isBadVersion(int version);int firstBadVersion(int n) {long low=1;long high=n;while(low<high){long mid=(low+high)/2;if(!isBadVersion(mid)){low=mid+1;}else{high=mid;}}return low;
}
運行效率如下所示:
第6題:按摩師
試題要求如下:
回答(C語言):
//設dp[i]表示第i個房屋之前的最高金額,則求dp[numsSize-1]即可。
//狀態轉移方程://dp[0] = nums[0]
//dp[1] = max(nums[1], nums[0])
//dp[i] = max(dp[i-2] + nums[i], dp[i-1])(i>=2)int massage(int* nums, int numsSize){if(!nums || numsSize == 0)return 0;if(numsSize == 1)return nums[0];int *dp = (int*)malloc(sizeof(int) * numsSize);dp[0] = nums[0];dp[1] = fmax(nums[1], nums[0]);for(int i = 2; i < numsSize; i++){dp[i] = fmax(dp[i-2] + nums[i], dp[i-1]);}return dp[numsSize - 1];
}
運行效率如下所示:
第7題:3的冪
試題要求如下:
回答(C語言):
bool isPowerOfThree(int n){if (n == 0) return false;while(n%3==0){n/=3;}if(n==1)return true;return false;
}
運行效率如下所示:
第8題:求1+2+...+n
試題要求如下:
回答(C語言):
//(1)如果多個變量均非0(包括None、False等),那么返回最后一個變量的值。如3 and 2 and 'a'的返回值為'a';
//(2)如果多個變量中存在0值,則返回第一個0值。如1 and 'a' and 0 and None的返回值為0。int sumNums(int n){int res = n;n && (res += sumNums(n-1));return res;
}
運行效率如下所示:
第9題:數值變為0的步數
試題要求如下:
回答(C語言):
int numberOfSteps (int num){int cou=0;while(num!=0){if(num%2==0){num/=2;}else{num-=1;}cou++;}return cou;
}
運行效率如下所示:
第10題:有多少小于當前數字的數
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* smallerNumbersThanCurrent(int* nums, int numsSize, int* returnSize){int* data_buf=(int*)malloc(sizeof(int)*(numsSize+1));memset(data_buf,'\0',sizeof(int)*(numsSize+1));for(int i=0;i<numsSize;i++){for(int j=0;j<numsSize;j++){if(nums[j]<nums[i])data_buf[i]++;}}data_buf[numsSize]='\0';*returnSize=numsSize;return data_buf;
}
運行效率如下所示:
總結
以上是生活随笔為你收集整理的力扣(LeetCode)刷题,简单题(第8期)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GitHub开源:17M超轻量级中文OC
- 下一篇: GitHub开源:100美元自制激光雷达