zoukankan      html  css  js  c++  java
  • LeetCode455. 分发饼干

    题目

    分析一

    直接类似双指针比较,本质就是贪心,小饼干给小的胃口,贪心小胃口

    代码一

     1 class Solution {
     2 public:
     3     int findContentChildren(vector<int>& g, vector<int>& s) {
     4         sort(g.begin(),g.end());
     5         sort(s.begin(),s.end());
     6         int res = 0;
     7         int i = 0,j = 0;
     8         while(i < s.size() && j < g.size()){
     9             if(s[i] >= g[j]) {res++;i++;j++;}
    10             else i++;
    11         }
    12         return res;
    13     }
    14 };

    分析二(与分析一正好相反)贪心最大胃口

    大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩

    代码二

     1 class Solution {
     2 public:
     3     int findContentChildren(vector<int>& g, vector<int>& s) {
     4         sort(g.begin(),g.end());
     5         sort(s.begin(),s.end());
     6         int res = 0;
     7         int index = s.size()-1;//最大饼干,应给最大胃口
     8         for(int i = g.size()-1;i >= 0;i--){
     9             if(index >= 0 && s[index] >= g[i]){
    10                 index--;
    11                 res++;
    12             }
    13         }
    14         return res;
    15     }
    16 };

    本题贪心,根据常识易得出:大饼干分给大胃口的孩子,会使分发的人数最多

  • 相关阅读:
    网络相关配置
    RestTemplate 工具类以及拦截器配置打印调用日志
    Redis(2)九大数据类型及落地案例
    JUC(7)ThreadLocal
    JUC(5)原子类
    JUC(6)LockSupport
    JUC(4)Volatile
    JUC(3)Java内存模型JMM
    JUC(1)说说Java“锁”事
    JUC(2)线程中断机制
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14367583.html
Copyright © 2011-2022 走看看