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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

目錄

第1題:單詞規(guī)律

第2題:找不同

第3題:在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

第4題:使用最小花費(fèi)爬樓梯

第5題:尋找峰值

第6題:字符串中的第一個(gè)唯一字符

第7題:兩個(gè)數(shù)組的交集 II

第8題:分發(fā)餅干

第9題:旋轉(zhuǎn)圖像

第10題:矩陣置零


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

第1題:單詞規(guī)律

試題要求如下:

回答(C語言):

bool wordPattern(char * pattern, char * str){char **hash = (char **)malloc(26 * sizeof(char*));for (int i = 0; i < 26; ++i){hash[i] = (char*)malloc(64 * sizeof(char));memset(hash[i], 0, 64 * sizeof(char));}int len = strlen(pattern);for (int i = 0; i < len; ++i){char *p = str;while (p && *p != 0 && *p != ' ') ++p;if (' ' == *p) *p++ = 0;if (strlen(str) == 0)return false;int pos = pattern[i] - 'a';if (strlen(hash[pos]) == 0){for (int j = 0; j < 26; ++j){if (j != pos && strlen(hash[j]) > 0){if (strcmp(hash[j], str) == 0)return false;}}strcpy(hash[pos], str);}else{if (strcmp(hash[pos], str) != 0)return false;}str = p;        }if (strlen(str) > 0)return false;return true;
}

運(yùn)行效率如下所示:


第2題:找不同

試題要求如下:

解題思路:

回答(C語言):

char findTheDifference(char* s, char* t) {int n = strlen(s), m = strlen(t);int as = 0, at = 0;for (int i = 0; i < n; i++) {as += s[i];}for (int i = 0; i < m; i++) {at += t[i];}return at - as;
}

運(yùn)行效率如下所示:


第3題:在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置

試題要求如下:

回答(C語言):

int* searchRange(int* nums, int numsSize, int target, int* returnSize){int *ret=(int *)malloc(sizeof(int)*2);ret[0]=-1;ret[1]=-1;*returnSize=2;if(numsSize==0||target<nums[0]||target>nums[numsSize-1]){        return ret;}int left=0, right=numsSize-1, mid=0, head=0, tail=0;while(left<=right){mid=(left+right)/2;if(nums[mid]>=target){right=mid-1;}else{left=mid+1;         //mid存的就是第一個(gè)>=target的那個(gè)值的索引}}head=left;left=0, right=numsSize-1, mid=0;while(left<=right){mid=(left+right)/2;if(nums[mid]<=target){left=mid+1;}else{right=mid-1;}}tail=right;if(nums[head]==target){     //存在這個(gè)數(shù)ret[0]=head;ret[1]=tail;}return ret;
}

運(yùn)行效率如下所示:


第4題:使用最小花費(fèi)爬樓梯

試題要求如下:

回答(C語言):

int minCostClimbingStairs(int* cost, int costSize) {int prev = 0, curr = 0;for (int i = 2; i <= costSize; i++) {int next = fmin(curr + cost[i - 1], prev + cost[i - 2]);prev = curr;curr = next;}return curr;
}

運(yùn)行效率如下所示:


第5題:尋找峰值

試題要求如下:

回答(C語言):

int findPeakElement(int *nums, int numsSize)
{if (!nums || numsSize < 1) {return 0;}if (numsSize == 1) {return 0;}if (nums[0] > nums[1]) {return 0;}if (nums[numsSize - 1] > nums[numsSize - 2]) {return numsSize - 1;}for (int i = 1; i < numsSize - 1; i++) {if (nums[i] > nums[i - 1] && nums[i] > nums[i + 1]) {return i;}}return -1;
}

運(yùn)行效率如下所示:


第6題:字符串中的第一個(gè)唯一字符

試題要求如下:

解題思路:

兩次遍歷,一次記錄字符出現(xiàn)次數(shù),一次找出第一個(gè)出現(xiàn)一次的索引。

回答(C語言):

int firstUniqChar(char * s){if(s == NULL || strlen(s) == 0) return -1;int len = strlen(s);if(len == 1) return 0;int recode[26] = {0};//記錄字符出現(xiàn)次數(shù)for(int i=0;i<len;i++){recode[s[i]-'a']++;}//找出第一個(gè)出現(xiàn)一次的索引for(int i=0;i<len;i++){if(recode[s[i]-'a'] == 1){return i;}}return -1;
}

運(yùn)行效率如下所示:


第7題:兩個(gè)數(shù)組的交集 II

試題要求如下:

回答(C語言):

/*** Note: The returned array must be malloced, assume caller calls free().*/
struct cell
{int value;int times1;int times2;
};
int* intersect(int* nums1, int nums1Size, int* nums2, int nums2Size, int* returnSize){int i = 0, cur, mapSize = nums1Size + nums2Size, *ret = (int *)malloc(sizeof(int) * (nums1Size + nums2Size));*returnSize = 0;struct cell *hashMap = (struct cell *)memset(malloc(sizeof(struct cell) * mapSize), 0, sizeof(struct cell) * mapSize);for (i = 0; i < nums1Size; i++){cur = (nums1[i] > 0 ? 1 : -1) * (nums1[i] % mapSize);while((hashMap[cur].times1 || hashMap[cur].times2) && hashMap[cur].value != nums1[i]){cur++;cur = cur == mapSize ? 0 : cur;}if (hashMap[cur].times1 == 0 && hashMap[cur].times2 == 0)hashMap[cur].value = nums1[i];hashMap[cur].times1++;}for (i = 0; i < nums2Size; i++){cur = (nums2[i] > 0 ? 1 : -1) * (nums2[i] % mapSize);while((hashMap[cur].times1 || hashMap[cur].times2) && hashMap[cur].value != nums2[i]){cur++;cur = cur == mapSize ? 0 : cur;}if (hashMap[cur].times1 == 0 && hashMap[cur].times2 == 0)hashMap[cur].value = nums2[i];hashMap[cur].times2++;}for (i = 0; i < mapSize; i++)while ((hashMap[i].times2--) && (hashMap[i].times1--))ret[(*returnSize)++] = hashMap[i].value;return ret;
}

運(yùn)行效率如下所示:


第8題:分發(fā)餅干

試題要求如下:

?

回答(C語言):

int compare(const void * a, const void * b)
{return ( *(int*)b - *(int*)a );
}int findContentChildren(int* g, int gSize, int* s, int sSize){int count=0;qsort (g, gSize, sizeof(int), compare);qsort (s, sSize, sizeof(int), compare);for(int i = 0, j = 0; i < gSize && j < sSize; i++, j++){if(s[j] >= g[i])count++;elsej--;}return count;
}

運(yùn)行效率如下所示:


第9題:旋轉(zhuǎn)圖像

試題要求如下:

回答(C語言):

void rotate(int** matrix, int matrixSize, int* matrixColSize) {int matrix_new[matrixSize][matrixSize];for (int i = 0; i < matrixSize; i++) {for (int j = 0; j < matrixSize; j++) {matrix_new[i][j] = matrix[i][j];}}for (int i = 0; i < matrixSize; ++i) {for (int j = 0; j < matrixSize; ++j) {matrix[j][matrixSize - i - 1] = matrix_new[i][j];}}
}

運(yùn)行效率如下所示:


第10題:矩陣置零

試題要求如下:

回答(C語言):

void setZeroes(int** matrix, int matrixSize, int* matrixColSize){int i = 0;int j = 0;int iRow = matrixSize;int iCol = matrixColSize[0];int row[iRow];int col[iCol];memset(row, 0x00, sizeof(int) * iRow);memset(col, 0x00, sizeof(int) * iCol);//1,遍歷一遍,找出所有為0的元素,并在行,列數(shù)組中標(biāo)記for (i = 0; i < iRow; i++){for (j = 0; j < iCol; j++){if (matrix[i][j] == 0){row[i] = 1;col[j] = 1;}}}//2,遍歷數(shù)組,按照行,列中的結(jié)果修改矩陣for (i = 0; i < iRow; i++){for (j = 0; j < iCol; j++){if (row[i] == 1){matrix[i][j] = 0;}if (col[j] == 1){matrix[i][j] = 0;}}}
}

運(yùn)行效率如下所示:

總結(jié)

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

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