leetcode 455
public static int findContentChildren(int[] g,int[] s){
int result=0;
Arrays.sort(g);
Arrays.sort(s);
int tmp=s.length-1;
for (int i = g.length - 1; i >= 0; i--) {
if (tmp >= 0 && s[tmp] >= g[i]) {
result++;
tmp--;//这里要记住,自减,比再用一层for循环强好几倍
//continue;
}
}
return result;
}
leetcode 376
摆动序列
1.端点
2.坡度处理
//方法2
int result =1;//涵盖了首节点
if(nums.length==1) return 1;
int preDiff=0;
int curDiff=0;
for(int i=0;i<nums.length-1;i++){
curDiff= nums[i+1]-nums[i];
if((preDiff<=0&&curDiff>0) || (preDiff>=0&& curDiff<0)){
result++;//计算上了末节点
}
if(curDiff!=0)//平坡前差不更新
preDiff=curDiff;
}
return result;
leetcode 53
public static int maxSubArray(int[] nums){
int result=0;
int max=Integer.MIN_VALUE;
if(nums.length==1)
return nums[0];
result = 0;
for(int i=0;i<nums.length;i++){
result = result + nums[i];
max=Math.max(result,max);
if(result<0)
result=0;// 思想在这里,前面的负数和丢弃
}
return max;
}