题目链接 => 戳这里
解析
这道题是典型的贪心算法,其实就是求局部最优解,这道题的每个局部其实就是要求用最小的饼干去满足孩子的胃口。那我们可以将饼干和孩子的胃口都排下序,然后遍历孩子和饼干,每次找到的第一个满足 cookie[i] >= child[j]的,就是满足条件的饼干,这时,满足的孩子数可以加1,然后遍历下一个孩子,和下一个饼干;
解法
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int chileNum = 0;
int cookieNum = 0;
while (chileNum < g.length && cookieNum < s.length) {
// 饼干大小满足孩子的胃口
if (g[chileNum] <= s[cookieNum]) {
chileNum ++;
}
// 1.满足孩子的胃口,那这块饼干就分出去了,需要偏移
// 2.不满足孩子胃口,因为孩子胃口已经排序过了,所以更加不可能满足后面孩子的胃口了
cookieNum ++;
}
return chileNum;
}
}
网友评论