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

歡迎訪問 生活随笔!

生活随笔

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

生活经验

力扣(LeetCode)刷题,简单题+中等题(第17期)

發(fā)布時間:2023/11/27 生活经验 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 力扣(LeetCode)刷题,简单题+中等题(第17期) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

第1題:數(shù)組中的第K個最大元素

第2題:字符串相乘

第3題:最長重復子數(shù)組

第4題:有效的完全平方

第5題:訪問所有點的最小時間

第6題:路徑總和

第7題:跳水板

第8題:解壓縮編碼列表

第9題:漢明距離

第10題:判斷能否形成等差數(shù)列


力扣(LeetCode)定期刷題,每期10道題,業(yè)務(wù)繁重的同志可以看看我分享的思路,不是最高效解決方案,只求互相提升。

第1題:數(shù)組中的第K個最大元素

試題要求如下:

回答(C語言):

int cmp(const void *a,const void*b)
{return *(int *)a > *(int *)b;
}
int findKthLargest(int* nums, int numsSize, int k){qsort(nums,numsSize,sizeof(int),cmp);return nums[numsSize-k];
}

運行效率如下所示:


第2題:字符串相乘

試題要求如下:

解答思路:

?請參見:力扣官方

回答(C語言):

char * multiply(char * num1, char * num2)
{int length1 = strlen(num1);int length2 = strlen(num2);int totalLength = length1 + length2;    //獲取相乘后字符串的總有效位數(shù)int charIndex = 0;  //定義負責索引字段int valueIndex = 0;int *value = (int *)malloc(sizeof(int) * totalLength);memset(value, 0, sizeof(int) * totalLength);char *result = (char *)malloc(sizeof(char) * (totalLength + 1));for(int i = length1  - 1; i >= 0; i--){for(int j = length2 - 1; j >= 0; j--){value[i + j + 1] += (num1[i] - '0') * (num2[j] - '0');}}for(int i= totalLength - 1; i > 0; i--)                 //獲取每個位置上面的數(shù)字并處理進位{value[i - 1] += value[i] / 10;value[i] %= 10;}while(value[valueIndex] == 0 && valueIndex < totalLength -1 ) {valueIndex++;   //忽略掉前面多余的0,但是最高位也就是唯一的一位0不能忽略}while(valueIndex < totalLength){result[charIndex++] = value[valueIndex++] + '0';}result[charIndex] = '\0';   //默認補上字符串的終止符return result; 
}

運行效率如下所示:


第3題:最長重復子數(shù)組

試題要求如下:

解答思路:

動態(tài)規(guī)劃。

回答(C語言):

int findLength(int* A, int ASize, int* B, int BSize) {int dp[ASize + 1][BSize + 1];memset(dp, 0, sizeof(dp));int ans = 0;for (int i = ASize - 1; i >= 0; i--) {for (int j = BSize - 1; j >= 0; j--) {dp[i][j] = A[i] == B[j] ? dp[i + 1][j + 1] + 1 : 0;ans = fmax(ans, dp[i][j]);}}return ans;
}

運行效率如下所示:


第4題:有效的完全平方

試題要求如下:

解答思路:

完全平方指用一個整數(shù)乘以自己,例如1*1,2*2,3*3等,依此類推。若一個數(shù)能表示成某個整數(shù)的平方的形式,則稱這個數(shù)為完全平方數(shù)。?

完全平方數(shù)可以通過累加從1往后的奇數(shù)找到,

1 = 1;

4 = 1 + 3;

9 = 1 + 3 + 5;

16 = 1 + 3 + 5 + 7;

...

回答(C語言):

bool isPerfectSquare(int num){if (num == 0) return false;int i = 1;while ( num > 0){num -= i;i += 2;}return num == 0 ? true : false;
}

運行效率如下所示:


第5題:訪問所有點的最小時間

試題要求如下:

解答思路:

把問題看成分析兩點之間的距離的關(guān)系:

1、兩點的x值有一個距離,y值有一個距離

2、因為只能豎著橫著或者斜著走,故最佳行走方式即為

(1)、若兩點x軸距離大于y軸距離,就先橫著走,直到xy距離兩者相等

(2)、若兩點y軸距離大于x軸距離,就先豎著走,直到xy距離兩者相等

3、xy距離相等,直接斜著走,此時距離即為x或y軸距離,直接相加即可

回答(C語言):

int minTimeToVisitAllPoints(int** points, int pointsSize, int* pointsColSize){int sum = 0;//總和int a = 0,b = 0;//兩點x、y距離for(int i = 0;i < pointsSize-1;i++){a = abs(points[i][0]-points[i+1][0]);b = abs(points[i][1]-points[i+1][1]);sum += abs(a-b);if(a>b) sum += b;else sum += a;}*pointsColSize=sum;return sum;
}

運行效率如下所示:


第6題:路徑總和

試題要求如下:

回答(C語言):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/typedef struct TreeNode TN;
bool hasPathSum(struct TreeNode* root, int sum){if(root == NULL)return false;if(root->val == sum && root->left == NULL && root->right == NULL)return true;if(hasPathSum(root->left, sum - root->val) || hasPathSum(root->right, sum - root->val))return true;return false;
}

運行效率如下所示:


第7題:跳水板

試題要求如下:

解答思路:

1、如果 k=0k=0,則不能建造任何跳水板,因此返回空數(shù)組。

2、如果 shorter和 longer相等,則建造的跳水板的長度是唯一的,都等于 shorter*k。

回答(C語言):

int* divingBoard(int shorter, int longer, int k, int* returnSize) {if (k == 0) {*returnSize = 0;return NULL;}if (shorter == longer) {int* p = (int*)malloc(sizeof(int));*p = shorter * k;*returnSize = 1;return p;}*returnSize = k + 1;int* lengths = (int*)malloc(sizeof(int) * (k + 1));for (int i = 0; i <= k; ++i) {lengths[i] = shorter * (k - i) + longer * i;}return lengths;
}

運行效率如下所示:


第8題:解壓縮編碼列表

試題要求如下:

回答(C語言):

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* decompressRLElist(int* nums, int numsSize, int* returnSize){int size=0;int *returned=calloc(5000,sizeof(int));for(int i = 0,k = 0;i < numsSize;i += 2){size=nums[i]+size;for(int j = 0;j < nums[i];j++){returned[k++]=nums[i+1];}}*returnSize=size;return returned;
}

運行效率如下所示:


第9題:漢明距離

試題要求如下:

回答(C語言):

int hammingDistance(int x, int y){int cnt = 0, n = 32;while(n--){if((x & 1) ^ (y & 1))cnt++;x >>= 1;y >>= 1;}return cnt;
}

運行效率如下所示:


第10題:判斷能否形成等差數(shù)列

試題要求如下:

回答(C語言):

int cmp(const void *a, const void *b)
{return *((int*)a) - *((int*)b);
}bool canMakeArithmeticProgression(int* arr, int arrSize){qsort(arr, arrSize, sizeof(int), cmp);int minus = arr[1] - arr[0];for (int i = 0; i < arrSize; i++) {if (arr[i] != (arr[0] + i * minus)) {return false;}}return true;
}

運行效率如下所示:

總結(jié)

以上是生活随笔為你收集整理的力扣(LeetCode)刷题,简单题+中等题(第17期)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。