文章目录
- 455.分发饼干
- 376.摆动序列
- 53.最大子序和
455.分发饼干
文字讲解:分发饼干
视频讲解:分发饼干
状态:这题ok
思路:
代码:
class Solution {public int findContentChildren(int[] g, int[] s) {if (s.length==0||g.length==0) {return 0;}Arrays.sort(g);Arrays.sort(s);//s是饼干数,如果s的最小值能够满足g的最大值int i = 0;int j = 0;//先找到能够开吃的位置while (g[i]>s[j]&&j<s.length) {j++;}int count=0;while (j<s.length&&i<g.length) {if (g[i]<=s[j]) {count++;i++;}j++;}return count;}
}
376.摆动序列
文字讲解:摆动序列
视频讲解:摆动序列
状态:看讲解,图一画出来就明白了
思路:
画图解决问题,分析图比较合适
代码:
class Solution {public int wiggleMaxLength(int[] nums) {if (nums.length<=1) {return nums.length;}int preDiff = 0;int curDiff = 0;int count = 1;for (int i = 1; i < nums.length; i++) {curDiff = nums[i] - nums[i-1];//判断等于的情况是考虑到平坡的情况if ((curDiff>0 && preDiff<=0) || (curDiff<0 && preDiff>=0)) {preDiff = curDiff;count++;}}return count;}
}
53.最大子序和
文字讲解:最大子序和
视频讲解:最大子序和
状态:
思路:
代码:
class Solution {public int maxSubArray(int[] nums) {int max = Integer.MIN_VALUE;int sum = 0;//连续和是负数的时候,直接跳过下一个,不用考虑之前的,应该之前的最大值已经被记录过了;//因为如果i之前的连续和是负数,那么他只会让后面的数相加后越来越小for (int i = 0; i < nums.length; i++) {sum+=nums[i];if (sum>max) max = sum;if (sum<0) sum = 0;}return max;}
}