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 };

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

  • 相关阅读:
    springSecurity登陆与退出json形式交互
    SQL-Mysql表结构操作
    SQL-Mysql数据类型
    SQL-SQL事物操作
    springboot之Validation参数校验
    springSecurity之java配置篇
    springsecurity入门篇
    springboot集成shiro
    13个不low的JS数组操作
    基于canvas的五子棋
  • 原文地址:https://www.cnblogs.com/fresh-coder/p/14367583.html
Copyright © 2011-2022 走看看