【算法刷题day31】Leetcode:455. 分发饼干、376. 摆动序列、53. 最大子数组和
Leetcode 455. 分发饼干
解题思路
从大到小遍历所有的饼干,找到胃口最大的孩子吃掉它。循环,直到没有孩子的胃口小于等于当前的饼干,或者饼干吃完了。
代码
class Solution {
public int findContentChildren(int[] g, int[] s) {
int res = 0;
Arrays.sort(g);
Arrays.sort(s);
int child = g.length - 1;
for (int cookie = s.length - 1; cookie >= 0; cookie--) {
while (child >= 0) {
if (g[child] <= s[cookie]) {
res++;
child--;
break;
}
child--;
}
}
return res;
}
}
//换个遍历方式,也是让胃口大的孩子,先吃掉大饼干
class Solution {
public int findContentChildren(int[] g, int[] s) {
int res = 0;
Arrays.sort(g);
Arrays.sort(s);
int cookie = s.length - 1;
for (int child = g.length - 1; child >= 0; child--) {
if (cookie >= 0 && g[child] <= s[cookie]) {
res++;
cookie--;
}
}
return res;
}
}
总结
Leetcode 376. 摆动序列
解题思路
仅当有波动的时候更新lastDiff和res++
代码
class Solution {
public int wiggleMaxLength(int[] nums) {
if (nums.length <= 1) return nums.length;
int res = 1;
int lastDiff = 0;
int curDiff = 0;
for (int i = 1; i < nums.length; i++) {
curDiff = nums[i] - nums[i - 1];
if (lastDiff <= 0 && curDiff > 0 || lastDiff >= 0 && curDiff < 0) {
res++;
lastDiff = curDiff;
}
}
return res;
}
}
总结
暂无
Leetcode 53. 最大子数组和
题目:53. 最大子数组和
解析:代码随想录解析
解题思路
curSum >= 0的时候,对区间和都是有收益的。当curSum<0的时候,只有负收益,所以重新启动。
代码
class Solution {
public int maxSubArray(int[] nums) {
int res = Integer.MIN_VALUE;
int curSum = 0;
for (int i = 0; i < nums.length; i++) {
curSum += nums[i];
if (curSum > res) {
res = curSum;
}
if (curSum < 0) curSum = 0;
}
return res;
}
}
总结
暂无
原文地址:https://blog.csdn.net/qq_45022758/article/details/137956375
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!