题目描述

image.png

解题思路

为了满足更多的小孩,就不要造成饼干尺寸的浪费。
大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。
这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩
可以尝试使用贪心策略,先将饼干数组和小孩数组排序。
然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。
image.png

  1. /**
  2. * 最大的饼干先满足胃口最大的孩子
  3. *
  4. * @param g
  5. * @param s
  6. * @return
  7. */
  8. public int findContentChildren(int[] g, int[] s) {
  9. Arrays.sort(g);
  10. Arrays.sort(s);
  11. int index = s.length - 1;// 饼干的下标
  12. int result = 0; // 满足的孩子数量
  13. for (int i = g.length - 1; i >= 0; i--) {
  14. if (index >= 0 && g[i] <= s[index]) { // 注意判断饼干是否吃完
  15. result++;
  16. index--;
  17. }
  18. }
  19. return result;
  20. }