原题链接
思路:贪心算法
- 分别将孩子数组和饼干数组升序排序(目的是先从胃口小的孩子处理,优先匹配小尺寸的饼干)
- 用两个指针 i,j 同时遍历两个数组( i 是孩子数组的指针,j 是饼干数组的):
如果孩子胃口 <= 饼干尺寸,说明可以满足这个孩子,同时这个饼干被该小孩占用,所以 i++,j++,去处理下一个孩子;
如果孩子胃口 > 饼干尺寸,则 j++,匹配下一个较大的饼干,直到孩子胃口 <= 饼干尺寸
public int findContentChildren(int[] g, int[] s) {
Arrays.sort(g);
Arrays.sort(s);
//1,2 1,2,3
int i = 0;//孩子数组的下标
int j = 0;//饼干数组的下标
while(i < g.length && j < s.length) {
if(g[i] <= s[j]) {
i++;
j++;
}else {
j++;
}
}
return i;
}