455.分发饼干
思路
贪心
代码
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int count=0;
int index=s.length-1;
for(int i=g.length-1;i>=0;i--){
if(index>=0 && s[index]>=g[i]){
count++;
index--;
}
}
return count;
}
}
376. 摆动序列
思路
贪心,如果是有下平下[1,2,2,0],所以要包含等于0的情况;如果是下平平上[1,2,2,3]就不能每次都更新pre,只有遇到波峰波谷的时候再去更新,一开始len=1是当含有两个元素的时候,外面定义了pre=0但是应该算有两个连续子序列。
代码
class Solution {
public int wiggleMaxLength(int[] nums) {
if(nums.length<=1) return nums.length;
int len=1;
int pre=0;
int cur=0;
for(int i=1;i<nums.length;i++){
cur=nums[i]-nums[i-1];
if((pre>=0 && cur<0) || (pre<=0 && cur>0)){
len++;
pre=cur;
}
}
return len;
}
}
53. 最大子序和
思路
贪心,如果当前cur已经小于0了,那对后面的元素都算是削弱,所以重新置为0
代码
class Solution {
public int maxSubArray(int[] nums) {
if(nums.length==1) return nums[0];
int count=Integer.MIN_VALUE;
int cur=0;
for(int i=0;i<nums.length;i++){
cur+=nums[i];
count=Math.max(count,cur);
if(cur<=0) cur=0;
}
return count;
}
}