该题可以利用贪心+双指针去求解,利用最小的饼干去满足胃口最小的孩子。
所以需要将二者的数组都从低到高排序。
public int findContentChildren(int[] g, int[] s) {
//设置双指针
int child = 0;
int cookie = 0;
//将二者的数组排序同为升序
Arrays.sort(g);
Arrays.sort(s);
//设置退出循环的条件,防止数组越界
while(child < g.length && cookie < s.length){
//如果胃口最小的孩子可以通过最小的饼干去满足,就说明可以满足的孩子+1
if(g[child] <= s[cookie]){
child++;
}
//如果当前较小的饼干不能满足当前胃口较小的孩子,那么饼干必然不能满足后面孩子的胃口
//所以将当前饼干抛弃及cookie的指针+1
cookie++;
}
//最后返回child就是可以满足孩子的数量
return child;
}
while(child < g.length && cookie < s.length)
要注意这个退出条件要同时满足上述两者,因为不仅仅一个数组参与循环,所以要考虑两个数组都不要越界。
//如果胃口最小的孩子可以通过最小的饼干去满足,就说明可以满足的孩子+1
if(g[child] <= s[cookie]){
child++;
}
//如果当前较小的饼干不能满足当前胃口较小的孩子,那么饼干必然不能满足后面孩子的胃口
//所以将当前饼干抛弃及cookie的指针+1
cookie++;
//最后返回child就是可以满足孩子的数量
return child;