力扣(LeetCode)刷题,简单题(第11期)
生活随笔
收集整理的這篇文章主要介紹了
力扣(LeetCode)刷题,简单题(第11期)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
目錄
第1題:二進制表示中質數個計算置位
第2題:消失的數字
第3題:最小絕對差
第4題:按奇偶排序數組II
第5題:主要元素
第6題:逐步求和得到正數的最小值
第7題:找不同
第8題:魔術索引
第9題:托普利茨矩陣
第10題:下一個更大元素1
力扣(LeetCode)定期刷題,每期10道題,業務繁重的同志可以看看我分享的思路,不是最高效解決方案,只求互相提升。
第1題:二進制表示中質數個計算置位
試題要求如下:
回答(C語言):
// 判斷是否為質數
bool isPrime(int num){if (num < 2) return false;int i;for(i = 2; i * i <= num; i++) {if (num % i == 0) return false;}return true;
}int getOneCount(int num){int count = 0;while (num != 0) {num &= (num - 1);count++;}return count;
}// 算出含有1的個數m,m是否為素數
int countPrimeSetBits(int L, int R){int i,num,count = 0;for (i = L; i <= R; i++) {num = getOneCount(i);if (isPrime(num)) count++;}return count;
}
運行效率如下所示:
第2題:消失的數字
試題要求如下:
回答(C語言):
int missingNumber(int* nums, int numsSize){int i=0;int* data_buf=(int*)malloc(sizeof(int)*(numsSize+1));memset(data_buf,0,sizeof(int)*(numsSize+1));for(i=0;i<numsSize;i++){data_buf[nums[i]]++;}for(i=0;i<numsSize;i++){if(data_buf[i]==0){break;}}data_buf[numsSize]='\0';return i;
}
運行效率如下所示:
第3題:最小絕對差
試題要求如下:
回答(C語言):
/*** Return an array of arrays of size *returnSize.* The sizes of the arrays are returned as *returnColumnSizes array.* Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().*/int cmp(const void* num, const void* num2){return *(int*)num - *(int*)num2;
}int** minimumAbsDifference(int* arr, int arrSize, int* returnSize, int** returnColumnSizes){qsort(arr,arrSize,sizeof(int),cmp);int **returnarra = malloc(sizeof(int*)*arrSize), count = 0;int *ColumnSizes = (int*)malloc(sizeof(int)* arrSize);assert(returnarra!=NULL && ColumnSizes!=NULL);int different, min = abs(arr[0]-arr[arrSize-1]);for(int i = 1; i < arrSize;i++){if((different = abs(arr[i] - arr[i-1])) < min){min = different;}}for(int i = 1; i < arrSize; i++){different = abs(arr[i] - arr[i-1]);if(different == min){int *pair = malloc(sizeof(int) * 2);pair[0] = arr[i-1];pair[1] = arr[i];returnarra[count] =pair;ColumnSizes[count++] = 2;}}*returnSize = count;*returnColumnSizes = ColumnSizes;return returnarra;
}
運行效率如下所示:
第4題:按奇偶排序數組II
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* sortArrayByParityII(int* A, int ASize, int* returnSize){//int* arr = (int*)malloc(sizeof(int) * ASize);*returnSize = ASize;int odd = 1;for (int i = 0; i < ASize; i += 2) {if (A[i] % 2 != 0) {while (A[odd] % 2 == 1) {odd += 2;}int tmp = A[odd];A[odd] = A[i];A[i] = tmp;} }return A;
}
運行效率如下所示:
第5題:主要元素
試題要求如下:
回答(C語言):
int majorityElement(int* nums, int numsSize){int cur;int counter = 0;for (int i = 0; i < numsSize; i++) {if (counter == 0) {counter = 1;cur = nums[i];} else if (cur != nums[i]) {counter--;} else {counter++;} }if(counter > 0)return cur;elsereturn -1;
}
運行效率如下所示:
第6題:逐步求和得到正數的最小值
試題要求如下:
回答(C語言):
int minStartValue(int* nums, int numsSize)
{int min = nums[0], count = 0;for (int i = 0; i < numsSize; i ++){count += nums[i];min = min < count ? min : count;}min = 1 - min;return min > 0 ? min : 1;
}
運行效率如下所示:
第7題:找不同
試題要求如下:
回答(C語言):
char findTheDifference(char * s, char * t){int sum_s = 0,sum_t = 0;for(int i = 0;i < strlen(t);i++){if(i < strlen(t)-1){sum_s +=s[i];}sum_t +=t[i];}return sum_t-sum_s;
}
運行效率如下所示:
第8題:魔術索引
試題要求如下:
回答(C語言):
int findMagicIndex(int* nums, int numsSize){for(int i = 0;i < numsSize;i++){if(nums[i] == i){return i;}}return -1;
}
運行效率如下所示:
第9題:托普利茨矩陣
試題要求如下:
回答(C語言):
//(r1, c1) (r2, c2)滿足對角線的特點 r1 - c1 == r2 - c2
bool isToeplitzMatrix(int** matrix, int matrixSize, int* matrixColSize){for(int i = 1;i < matrixSize;++i){for(int j = 1;j < matrixColSize[0];++j){if(matrix[i-1][j-1] != matrix[i][j])return false;}}return true;
}
運行效率如下所示:
第10題:下一個更大元素1
試題要求如下:
回答(C語言):
/*** Note: The returned array must be malloced, assume caller calls free().*/
int* nextGreaterElement(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){int* res = (int*)malloc(sizeof(int) * nums1Size);int flag = 0;int i,j;for(i = 0; i < nums1Size; i++) {for(j = 0; j < nums2Size; j++) {if(nums1[i] == nums2[j]) {flag = 1;continue;} else if(nums1[i] < nums2[j] && flag == 1) {res[i] = nums2[j];break;} }if(j == nums2Size) {res[i] = -1;}flag = 0;}*returnSize = nums1Size;return res;
}
運行效率如下所示:
總結
以上是生活随笔為你收集整理的力扣(LeetCode)刷题,简单题(第11期)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 30行Python代码实现高分辨率图像导
- 下一篇: 物联网设备天线设计与选型指南