跳跃问题
每个位置i能到达的最远位置为nums[i]+i.我们依次算出能到达的最远距离即可判断
public boolean canJump(int[] nums) {
int maxLen=0;
int len=nums.length;
for(int i=0;i<len;i++){
//i<=maxLen,说明可以到达该位置
if(i<=maxLen){
maxLen=Math.max(nums[i]+i,maxLen);
}
if(maxLen>=len-1)
return true;
}
return false;
}
分发饼干
从贪心算法角度考虑,经过排序后,最大的饼干应该给胃口最大的孩子
public int findContentChildren(int[] g, int[] s) {
int count=0;
Arrays.sort(g);
Arrays.sort(s);
int[] flag=new int[g.length];
for(int i=s.length-1;i>=0;i--){
for(int j=g.length-1;j>=0;j--){
if(flag[j]==0&&s[i]>=g[j]){
count++;
flag[j]=1;
break;
}
}
}
return count;
}