日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

力扣(LeetCode)刷题,简单题(第11期)

發布時間:2023/11/27 生活经验 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 力扣(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期)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。