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

歡迎訪問 生活随笔!

生活随笔

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

生活经验

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

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

目錄

第1題:將整數(shù)轉(zhuǎn)換為兩個無零整數(shù)的和

第2題:一周中的第幾天

第3題:把二叉搜索樹轉(zhuǎn)換為累加樹

第4題:連續(xù)字符

第5題:拿硬幣

第6題:刪除中間節(jié)點

第7題:猜數(shù)字

第8題:整數(shù)的各位積和之差

第9題:一維數(shù)組的動態(tài)和

第10題:統(tǒng)計位數(shù)為偶數(shù)的數(shù)字


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

第1題:將整數(shù)轉(zhuǎn)換為兩個無零整數(shù)的和

試題要求如下:

解答思路:

一對一對篩選,若一組數(shù)值某個數(shù)存在含0組成,則跳過該組。

回答(C語言):

/*** Note: The returned array must be malloced, assume caller calls free().*/
int* getNoZeroIntegers(int n, int* returnSize){int i = 1,j = n-1;int temp = 0;int* data_buf = (int*)malloc((2)*sizeof(int));while(i<j){temp = i;while(temp % 10 != 0){temp /= 10;}if(temp != 0){i++;j--;continue;}temp = j;while(temp % 10 != 0){temp /= 10;}if(temp != 0){i++;j--;continue;} break;      }data_buf[0] = i;data_buf[1] = j;*returnSize = 2;return data_buf;
}

運行效率如下所示:


第2題:一周中的第幾天

試題要求如下:

解答思路:

1、明確起點1971.1.1 - "Friday", 用最小值避免符號運算;

2、計算從1971.1.1到(day, month, year)的天數(shù), 需要注意中間年份會有閏年, 另外當前年份需要單獨運算;

3、根據(jù)天數(shù)差值, 對7(一周7天)進行求余, 并且需要考慮起點是"Friday"(周五)的偏移。

回答(C語言):

char * dayOfTheWeek(int day, int month, int year){const char *s[7] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};if(year < 1971 || year > 2100) return NULL;int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};int sum = 0;for(int i = 1971; i < year; i ++){if(0 == i % 400 || (0 != i % 100 && 0 == i % 4)){sum += 366;}else{sum += 365;}}if(0 == year % 400 || (0 != year % 100 && 0 == year % 4)){daysOfMonth[1] = 29;}for(int i = 0; i < month - 1; i ++){sum += daysOfMonth[i];}sum += day - 1;return s[(sum + 5) % 7];
}

運行效率如下所示:


第3題:把二叉搜索樹轉(zhuǎn)換為累加樹

試題要求如下:

解答思路:

在遞歸方法中,我們維護一些遞歸調(diào)用過程中可以訪問和修改的全局變量。首先我們判斷當前訪問的節(jié)點是否存在,如果存在就遞歸右子樹,遞歸回來的時候更新總和和當前點的值,然后遞歸左子樹。如果我們分別正確地遞歸 root.right 和 root.left ,那么我們就能正確地用大于某個節(jié)點的值去更新此節(jié)點,然后才遍歷比它小的值。

回答(C語言):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/
static void dfs(struct TreeNode* psRoot, int* pSum)
{if (NULL == psRoot){return;}dfs(psRoot->right, pSum);*pSum += psRoot->val;psRoot->val = *pSum;dfs(psRoot->left, pSum);
}struct TreeNode* convertBST(struct TreeNode* root){int sum = 0;dfs(root, &sum);return root;
}

運行效率如下所示:


第4題:連續(xù)字符

試題要求如下:

回答(C語言):

int maxPower(char * s){int i,cou = 1,num = 0,len = strlen(s)-1;char temp = s[0];for(i = 1;i <= len;i++){if(temp == s[i]){cou++;if(cou > num){num = cou;}}else{cou = 1;}temp = s[i];}if(num == 0){num = 1;}return num;
}

運行效率如下所示:


第5題:拿硬幣

試題要求如下:

回答(C語言):

int minCount(int* coins, int coinsSize){int cou = 0;int temp = 0;for(int i = 0;i < coinsSize;i++){temp = coins[i];while(temp > 0){cou++;temp -= 2;}}return cou;
}

運行效率如下所示:


第6題:刪除中間節(jié)點

試題要求如下:

解答思路:

將node->next指向的地址傳給node,然后釋放掉多余節(jié)點。

注意給出的形參不是頭節(jié)點。

回答(C語言):

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
void deleteNode(struct ListNode* node) {struct ListNode *t=node->next;*node=*t;free(t);
}

運行效率如下所示:


第7題:猜數(shù)字

試題要求如下:

解答思路:

第一次在力扣做這么簡單的題,判斷每一位元素是否相等。

回答(C語言):

int game(int* guess, int guessSize, int* answer, int answerSize){int cou = 0;for(int i = 0;i < guessSize;i++){if(guess[i] == answer[i]){cou++;}}return cou;
}

運行效率如下所示:


第8題:整數(shù)的各位積和之差

試題要求如下:

回答(C語言):

int subtractProductAndSum(int n){int product = 1,sum = 0;for(int i = 0,num = n;num > 0;i++){product *= num%10;sum += num%10;num /= 10;}return product-sum;
}

運行效率如下所示:


第9題:一維數(shù)組的動態(tài)和

試題要求如下:

解答思路:

求取前綴和,直接對原數(shù)組求取,不用額外分配存儲空間。

回答(C語言):

/*** Note: The returned array must be malloced, assume caller calls free().*/
int *runningSum(int *nums, int numsSize, int *returnSize)
{for(int i = 1;i < numsSize;i++){nums[i] = nums[i] + nums[i-1];}*returnSize = numsSize;return nums;
}

運行效率如下所示:


第10題:統(tǒng)計位數(shù)為偶數(shù)的數(shù)字

試題要求如下:

回答(C語言):

int findNumbers(int* nums, int numsSize){int temp = 0,cou = 0,data = 0;for(int i = 0;i < numsSize;i++){temp = nums[i];while(temp > 0){cou++;temp /= 10;}if(cou%2 == 0){data++;}cou = 0;}return data;
}

運行效率如下所示:

總結(jié)

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

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