目录

第1题:两数之和IV—输入BST

第2题:柠檬水找零

第3题:左叶子之和

第4题:第K个缺失的正整数

第5题:反转字符串2

第6题:最小移动次数使数组元素相等

第7题:分发饼干

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

第9题:消失的数字

第10题:多数元素


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

第1题:两数之和IV—输入BST

试题要求如下:

解答思路:

1、使用中序遍历把结果存在数组中;

2、用双指针(即下标),来找对应结果是否存在 i指向最小,j指向最大。若i+j小于目标值,那么i++,i+j大于>目标值,则j--。

回答(C语言):

#define Maxsize 10000void inorder(struct TreeNode* root,int *nums,int* length);bool findTarget(struct TreeNode* root, int k){int i=0,j=-1;  //j记录最大值的下标(即数组最后一个元素),把其指针传给inorder函数int* nums=(int*)malloc(Maxsize*sizeof(int)); inorder(root,nums,&j);while(i<j)  //循环判断数组中是否存在两数之和等于k的情况{if(nums[i]+nums[j]==k) return true;else if(nums[i]+nums[j]<k) i++;else  j--;}return false;
}void inorder(struct TreeNode* root,int *nums,int* length){ //递归中序遍历二叉搜索树,并且把结果存在数组中if(root==NULL) return;inorder(root->left,nums,length);nums[++(*length)]=root->val;inorder(root->right,nums,length);
}

运行效率如下所示:


第2题:柠檬水找零

试题要求如下:

回答(C语言):

bool lemonadeChange(int*a, int n)
{if (a == NULL || n <= 0) {return false;} int s5 = 0, s10 = 0, s20 = 0;for (int i = 0; i < n; i++) {switch (a[i]) {case 20: // 给20找15元 if (s10 > 0 && s5 > 0) {s20++, s10--, s5--;continue; // 找开了 }if (s5 > 3) {s20++, s5 -= 3;continue; // 找开了}return false;case 10: //给10元找5元 if (s5 > 0) {s10++, s5--;continue; // 找开了}return false;case 5: // 给5元s5++;continue; // 不找钱  default: // 其他都失败 return false;}}return true;
}

运行效率如下所示:


第3题:左叶子之和

试题要求如下:

回答(C语言):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/int sumOfLeftLeaves(struct TreeNode* root){if(!root) return 0;int sum=0;if(root->left){if(!root->left->left&&!root->left->right){sum+=root->left->val;}else{sum+=sumOfLeftLeaves(root->left);}}if(root->right){sum+=sumOfLeftLeaves(root->right);}return sum;
}

运行效率如下所示:


第4题:第K个缺失的正整数

试题要求如下:

回答(C语言):

int findKthPositive(int* arr, int arrSize, int k){int i = 0, cnt=0, hash[10000] = {0};for(i=0;i<arrSize;i++){hash[arr[i]]++; //记录出现次数,arr[i]对应下标的hash表值hash[arr[i]]就不会为0}for(i=1;i<10000;i++){if(hash[i]==0){cnt++;}if(cnt==k){ //找到第k个为0的元素,它也就是第k个没有出现的元素,返回对应下标即可break;}}return i;
}

运行效率如下所示:


第5题:反转字符串2

试题要求如下:

回答(C语言):

char * reverseStr(char * s, int k){//每2k个翻转前k个//不足2k但大于等于1k,翻转前k个字符剩下的不变//小于k个字符,全部翻转int len = strlen(s);for(int i=0; i<len; i+=2*k){int left = i;int right = (i + k - 1 < len) ? i + k - 1 : len - 1;while(left<right){char c = s[left];s[left++] = s[right];s[right--] = c;}    }return s;
}

运行效率如下所示:


第6题:最小移动次数使数组元素相等

试题要求如下:

解题思路:

n - 1个数加1即1个数减1,因此只需算sum(nums) - numsSize * min。

回答(C语言):

int minMoves(int* nums, int numsSize){int ret = 0;int min = nums[0];for(int i = 0;i < numsSize;i++){if(nums[i] < min){min = nums[i];}}for(int i = 0;i < numsSize;i++){ret = ret + nums[i] - min;}return ret;
}

运行效率如下所示:


第7题:分发饼干

试题要求如下:

解题思路:

采用贪心算法的思路,此问题的贪心选择是“先把胃口最小的孩子满足,再满足之后的,如果当前胃口最小的孩子都没满足那么已经终止分配了”。

回答(C语言):

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

运行效率如下所示:


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

试题要求如下:

解题思路:

1、二叉树为空树,最小深度为0;

2、二叉树不为空树,两子树均不为空,获取左右子树的最小深度,取最小的那个加1;

3、二叉树不为空树,但两子树其中之一为空,最小深度为子树不为空的最小深度加1。

回答(C语言):

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/#define min(A, B) ((A) < (B) ? (A) : (B))
int minDepth(struct TreeNode* root){if (root == NULL) {return 0;}int left = minDepth(root->left);int right = minDepth(root->right);return (left && right) ? min(left, right) + 1 : left + right + 1;
}

运行效率如下所示:


第9题:消失的数字

试题要求如下:

回答(C语言):

int missingNumber(int* nums, int numsSize){int sum = 0;for(int i = 0; i < numsSize; i++){sum  += nums[i];}return ((numsSize * (1 + numsSize))/2) - sum;
}

运行效率如下所示:


第10题:多数元素

试题要求如下:

解答思路:

摩尔投票法,通过一个计数变量s,来观察哪一个数最后不是0即为majority;相同加,不相同减,变为0后换下一个。

回答(C语言):

int majorityElement(int* nums, int numsSize){int s = 1;int maj = nums[0];for (int i = 1; i < numsSize; i++) {if (maj == nums[i]){s++;}else {s--;}if (s == 0) {maj = nums[i + 1];}}return maj;
}

运行效率如下所示:

力扣(LeetCode)刷题,简单题(第22期)相关推荐

  1. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  2. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  3. 力扣(LeetCode)刷题,简单+中等题(第26期)

    目录 第1题:字典序排数 第2题:字符串解码 第3题:查找常用字符 第4题:所有奇数长度子数组的和 第5题:长按键入 第6题:分割字符串的最大得分 第7题:回文链表 第8题:有多少小于当前数字的数字 ...

  4. 力扣(LeetCode)刷题,简单题(第23期)

    目录 第1题:整数转换 第2题:重复的子字符串 第3题:范围求和2 第4题:反转数位 第5题:数字转换为十六进制 第6题:比较含退格的字符 第7题:三个数的最大乘积 第8题:珠玑妙算 第9题:旋转字符 ...

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

    目录 第1题:将整数转换为两个无零整数的和 第2题:一周中的第几天 第3题:把二叉搜索树转换为累加树 第4题:连续字符 第5题:拿硬币 第6题:删除中间节点 第7题:猜数字 第8题:整数的各位积和之差 ...

  6. 力扣(LeetCode)刷题,简单题(第5期)

    目录 第1题:二进制中1的个数 第2题:打印从 1 到最大的 n 位十进制数 第3题:删除链表的节点 第4题:调整数组顺序使奇数位于偶数前面 第5题:链表中倒数第K个节点 第6题:反转链表 第7题:二 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  8. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  9. 力扣(LeetCode)刷题,简单+中等题(第32期)

    目录 第1题:数组的度 第2题:托普利茨矩阵 第3题:爱生气的书店老板 第4题:翻转图像 第5题:有效的数独 第6题:无重复字符的最长子串 第7题:区域和检索 - 数组不可变 第8题:二维区域和检索 ...

  10. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

最新文章

  1. text-shadow
  2. myeclipse + maven项目创建
  3. Android图片适应屏幕大小
  4. 前端学习(1874)vue之电商管理系统电商系统之处理项目中eslint语法报错
  5. echarts中国地图3D各个城市标点demo
  6. document.addEventListener理解
  7. IBM 100年 科技引导未来
  8. Debian Ubuntu/Centos7设置某些软件不自动更新
  9. 【转】kubernetes 中 deployment 支持哪些键值
  10. 离散数学 - 04 图论
  11. 【手持式微波频谱分析仪】真正便携且功能强大的仪器 - 欧洲制造
  12. 七.其他技术-Beetl与BeetlSQL
  13. Arduino(关于驱动步进电机的学习)
  14. 折扣力度自动计算器 | 财富自由必备小工具
  15. 无锡做大做强“中国芯” 华虹功不可没
  16. xd怎么做页面滑动_Adobe XD中的滚动组功能详解!
  17. Mes系统批次管理功能
  18. 华南主板bios怎么恢复出厂设置_最详细的主板bios设置图解教程bios设置指南史无前例...
  19. ssm的校园单车自行车租赁系统|租车系统计算机专业毕业论文java毕业设计开题报告
  20. 新电途与华为AITO达成充电合作;SGW和摩托罗拉完成家庭音频产品许可交易 | 美通企业日报...

热门文章

  1. Python:处理一些格式规范的文字
  2. Python 实现九九乘法表
  3. Android 通过创建一个类来传递对象
  4. SpringBoot学习之启动方式
  5. HTML5与CSS3权威指南之CSS3学习记录
  6. JSP--JavaBean
  7. C#中Winform程序中如何实现多维表头【不通过第三方报表程序】
  8. 使用Newtonsoft.Json
  9. 搭建Git服务器教程转载
  10. 携号转网:欢迎比阻挠更为有效