zoukankan      html  css  js  c++  java
  • leetcode 455 分发饼干 贪心算法

    核心思路:

    给一个孩子的饼干应当尽量小并且又能满足该孩子,这样大饼干才能拿来给满足度比较大的孩子。
    因为满足度最小的孩子最容易得到满足,所以先满足满足度最小的孩子。

    贪心算法
    在以上的解法中,我们只在每次分配饼干时选择一种看起来是当前最优的分配方法,但无法保证这种局部最优的分配方法最后能得到全局最优解。我们假设能得到全局最优解,并使用反证法进行证明,即假设存在一种比我们使用的贪心策略更优的最优策略。如果不存在这种最优策略,表示贪心策略就是最优策略,得到的解也就是全局最优解。

    假设一个孩子的胃口是1,我们有1和2两个大小的饼干,如果把2给这个孩子,则如果后面还有胃口为2的孩子则没有饼干能给;而先用尽量小的饼干去满足孩子,这样才能满足胃口比较大的孩子。

    class Solution {
        public int findContentChildren(int[] g, int[] s) {
            if(g.length==0||s.length==0) return 0;
            Arrays.sort(g);
            Arrays.sort(s);
            int g1=0,s1=0;
            while(g1<g.length&&s1<s.length){
                //如果只剩下饼干或者只剩下孩子都没有继续计算下去的意义
                if(g[g1]<=s[s1]){
                    g1++;
                    //如果能够满足当前孩子的胃口,则计数,如果不能满足则将饼干指针往后移,用更大的饼干                 //去试图满足当前孩子的胃口
                }
                s1++;//向后移动饼干,要么由于该孩子已被满足,要么由于之前的饼干太小,现在用下一个更大的
                        //饼干尝试
            }
            return g1;
    
        }
    }

    注意:

    用的是Arrays.sort进行快排,而不是Array。

  • 相关阅读:
    Mstsc 微软远程桌面控制工具
    session
    防止重复提交表单
    nginx日志格式及自定义日志配置
    代码审核:安全性测试方案
    代码审计:安全性测试方案
    Word转换为Html (用处:生成一些注册协议之类的)
    技术人员的发展之路 (转载)
    phpcms 杂记
    ThinkPHP 日志
  • 原文地址:https://www.cnblogs.com/sjh-dora/p/12867483.html
Copyright © 2011-2022 走看看