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

举报
不脱发的程序猿 发表于 2020/12/31 23:58:15 2020/12/31
【摘要】 目录 第1题:相同的树 第2题:对称二叉树 第3题:二叉树的最大深度 第4题:二叉树的最小深度 第5题:路径总和 第6题:杨辉三角1 第7题:杨辉三角2 第8题:买卖股票的最佳时机1 第9题:买卖股票的最佳时机2 第10题:验证回文串 力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。...

目录

第1题:相同的树

第2题:对称二叉树

第3题:二叉树的最大深度

第4题:二叉树的最小深度

第5题:路径总和

第6题:杨辉三角1

第7题:杨辉三角2

第8题:买卖股票的最佳时机1

第9题:买卖股票的最佳时机2

第10题:验证回文串


力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

第1题:相同的树

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. bool isSameTree(struct TreeNode* p, struct TreeNode* q){
  10. if(!p && !q){
  11. return true;
  12. }
  13. else if(!p || !q){
  14. return false;
  15. }
  16. else {
  17. if(p->val != q->val){
  18. return false;
  19. }
  20. else {
  21. return isSameTree(p->left, q->left) && isSameTree(p->right, q->right);
  22. }
  23. }
  24. }

第2题:对称二叉树

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. bool isMirror(struct TreeNode* p, struct TreeNode* q)
  10. {
  11. if(!p && !q)
  12. return true;
  13. else if(!p || !q)
  14. return false;
  15. else{
  16. if(p->val == q->val)
  17. return isMirror(p->left, q->right) && isMirror(p->right, q->left);
  18. else
  19. return false;
  20. }
  21. }
  22. bool isSymmetric(struct TreeNode* root){
  23. return isMirror(root, root);
  24. }

第3题:二叉树的最大深度

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. int maxDepth(struct TreeNode* root){
  10. if(root == NULL){
  11. return 0;
  12. }
  13. int left_length = maxDepth(root->left) + 1;
  14. int right_length = maxDepth(root->right) + 1;
  15. if( left_length >= right_length){
  16. return left_length;
  17. }else{
  18. return right_length;
  19. }
  20. }

第4题:二叉树的最小深度

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. int minDepth(struct TreeNode* root){
  10. if(root == NULL){
  11. return 0;
  12. }
  13. int left_length = minDepth(root->left) + 1;
  14. int right_length = minDepth(root->right) + 1;
  15. if( root->left == NULL ){
  16. return right_length;
  17. }else if( root->right == NULL ){
  18. return left_length;
  19. }else if( left_length >= right_length ){
  20. return right_length;
  21. }else{
  22. return left_length;
  23. }
  24. }

第5题:路径总和

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * Definition for a binary tree node.
  3. * struct TreeNode {
  4. * int val;
  5. * struct TreeNode *left;
  6. * struct TreeNode *right;
  7. * };
  8. */
  9. bool hasPathSum(struct TreeNode* root, int sum){
  10. if(root == NULL)
  11. return 0;
  12. sum-=root->val;
  13. if(root->left == NULL && root->right == NULL)
  14. return sum==0?1:0;
  15. return hasPathSum(root->left,sum) || hasPathSum(root->right,sum);
  16. }

第6题:杨辉三角1

试题要求如下:

 回答(C语言): 


  
  1. /**
  2. * Return an array of arrays of size *returnSize.
  3. * The sizes of the arrays are returned as *returnColumnSizes array.
  4. * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
  5. */
  6. int** generate(int numRows, int* returnSize, int** returnColumnSizes){
  7. //返回的是二维数组,所以需要保存每一行的信息
  8. *returnSize = numRows;
  9. //returnColumnSizes储存杨辉三角每一行元素的个数
  10. *returnColumnSizes = (int *)malloc(sizeof(int)*numRows);
  11. int** res = (int**)malloc(sizeof(int*)*numRows);
  12. for (int i = 0; i < numRows; i++) {
  13. (*returnColumnSizes)[i] = i+1;
  14. res[i] = (int*)malloc(sizeof(int)*(i+1));
  15. res[i][0] = 1;
  16. res[i][i] = 1;
  17. for (int j = 1; j < i; j++) {
  18. res[i][j] = res[i-1][j] + res[i-1][j-1];
  19. }
  20. }
  21. return res;
  22. }

第7题:杨辉三角2

试题要求如下:

 回答(C语言): 


  
  1. /**
  2. * Note: The returned array must be malloced, assume caller calls free().
  3. */
  4. int* getRow(int rowIndex, int* returnSize){
  5. *returnSize = rowIndex + 1;
  6. int* p = (int*)malloc(sizeof(int) * (rowIndex + 1));
  7. int i, j, k = 0;
  8. for(i = 0; i <= rowIndex; i++){
  9. p[k++] = 1;
  10. for(j = i - 1; j >= 1; j--){
  11. p[j] += p[j-1];
  12. }
  13. }
  14. return p;
  15. }

第8题:买卖股票的最佳时机1

试题要求如下:

回答(C语言): 


  
  1. /**
  2. * i指向当前遍历的值,min指向当前遍历过的值中的最小值,max表示当前的最大利润。
  3. * 当prices[i] < min,更新,否则判断prices[i] - min是否大于max,然后更新max
  4. */
  5. int maxProfit(int* prices, int pricesSize){
  6. if(pricesSize<=0)
  7. return 0;
  8. int min=prices[0],max = 0;
  9. for(int i = 0; i < pricesSize; i++){
  10. if(prices[i] < min){
  11. min = prices[i];
  12. }
  13. else if(prices[i] - min > max){
  14. max = prices[i] - min;
  15. }
  16. }
  17. return max;
  18. }

第9题:买卖股票的最佳时机2

试题要求如下:

回答(C语言): 


  
  1. int maxProfit(int* prices, int pricesSize){
  2. int profit=0;
  3. for(int i=0;i<pricesSize-1;i++)
  4. if(prices[i]<prices[i+1])
  5. profit+=prices[i+1]-prices[i];
  6. return profit;
  7. }

第10题:验证回文串

试题要求如下:

 回答(C语言): 


  
  1. bool isPalindrome(char * s){
  2. int i = 0;
  3. int len = strlen(s);
  4. int j = len - 1;
  5. while (i < j) {
  6. if ((int)isalnum(s[i]) == 0) {
  7. i++;
  8. continue;
  9. }
  10. if ((int)isalnum(s[j]) == 0) {
  11. j--;
  12. continue;
  13. }
  14. if (tolower(s[i]) != tolower(s[j])) {
  15. return false;
  16. }
  17. i++;
  18. j--;
  19. }
  20. return true;
  21. }

 

文章来源: handsome-man.blog.csdn.net,作者:不脱发的程序猿,版权归原作者所有,如需转载,请联系作者。

原文链接:handsome-man.blog.csdn.net/article/details/104232471

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。