力扣455-分发饼干(java题解)

66 阅读1分钟

题目链接

前情提要:

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

题目思路:

局部最优:让每一个大饼干尽可能的去满足每一个胃口大的孩子

如果不好理解可以取反例思考 : 如果让大饼干去给一个小胃口的孩子 那是不是亏了。更大胃口的孩子就满足不了

完整代码:

 class Solution {
     public int findContentChildren(int[] g, int[] s) {
         //先给胃口和饼干进行排序
         Arrays.sort(g);
         Arrays.sort(s);
         int index = s.length - 1;
         int result = 0;
         //遍历每一个胃口的小孩 从大胃口往后面遍历
         for(int i = g.length - 1;i >= 0; i--){
             //如果有大饼干可以满足大胃口的孩子就将饼干给该孩子
             //如果不能满足就等待下一个可以满足的 从而实现动态的满足大胃口的孩子
             if(index >= 0 && s[index] >= g[i]){
                 result ++;
                 index --;
             }
         }
         return result;
 ​
     }
 }

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!