方法一:排序 + 贪心。
局部最优从而使得全局最优。
将两个数组排序,假设有m个孩子,每个孩子的胃口是g[i]。有n块饼干,每块饼干的尺寸是s[j],将符合当前孩子胃口的最小的饼干分配给孩子,这是因为排序后 s[j + 1] >= s[j]
、g[i + 1] >= g[i]
, 若 s[j] >= g[i]
,但是不将 j 分配给 i 小孩,而是将 j + 1
块饼干分配给 i
孩子,可能会导致第 j
块饼干无法分配给 i+1
小孩,从而导致一块饼干浪费
class Solution {
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
int ans = 0;
int i = 0, j = 0;
while (i < g.length && j < s.length) {
if (s[j] >= g[i]) {
i++;
}
j++;
}
return i;
}
}