leetcode455 分发饼干
class Solution { public int findContentChildren(int[] g, int[] s) { //先对孩子的胃口和饼干尺寸进行排序 Arrays.sort(g); Arrays.sort(s); int i=0; int j=0; //任意一个数组遍历结束就结束循环 while(i<g.length&&j<s.length){ //如果当前饼干能够满足则跳到下一个孩子 if(s[j]>=g[i]){ i++; } //不管当前饼干能否满足,都要跳到下一块饼干 j++; } return i; }}
leetcode53 最大子序和
class Solution { public int maxSubArray(int[] nums) { int res = nums[0]; //如果sum>0,则对后面子序列求和有帮助,否则重新寻找序列头 int sum = 0; for(int i:nums){ if(sum>0){ sum +=i; } else{ sum = i; } res = Math.max(res,sum); } return res; }}
leetcode 摆动序列
class Solution { public int wiggleMaxLength(int[] nums) { int up=1; int down=1; for(int i=1;i<nums.length;i++){ if(nums[i]>nums[i-1]){ up = down+1; }else if(nums[i]<nums[i-1]){ down = up+1; } } return nums.length<2? nums.length:Math.max(up,down); }}
leetcode45 跳跃游戏
class Solution { public int jump(int[] nums) { if(nums.length<2){ return 0; } int res = 0; //每次能跳的最远处 int end = 0; int posMax = 0; for(int i =0;i<nums.length;i++){ posMax = Math.max(posMax,i+nums[i]); //当循环到最远处时,更新下次的边界 if(i==end){ res++; end = posMax; } //能跳到最远处时,跳出循环 if(end>=nums.length-1){ return res; } } return res; }}