贪心算法(代码片段)

kid-xiaoyuan kid-xiaoyuan     2023-04-22     663

关键词:

455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

注意:

你可以假设胃口值为正。
一个小朋友最多只能拥有一块饼干。

示例 1:

输入: [1,2,3], [1,1]

输出: 1

解释:
你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。
所以你应该输出1。
示例 2:

输入: [1,2], [1,2,3]

输出: 2

解释:
你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出2.

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/assign-cookies
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 解题思路:

对饼干数组和孩子数组进行升序排序。

分析:那么对第cookie个饼干,如果不能满足孩子child,那么肯定也满足不了child以后的孩子

所以分两种情况:

1:第cookie个饼干>=第child个孩子的需求

这时候满足条件,child++,cookie++ 统计数counts++;

2:第cookie个饼干<第child个孩子的需求

这时候cookie++,换一个更大的饼干。

class Solution 
public:
    int findContentChildren(vector<int>& g, vector<int>& s) 
        int counts =0;
        sort(g.begin(),g.end());
        sort(s.begin(),s.end());
        int child = 0,cookie = 0;
        while(child < g.size() && cookie < s.size())
        
            if(g[child] <= s[cookie])
            
                counts++;
                child++;
                cookie++;
            
            else
            
                cookie++;
            
        
        return counts;
    
;

 

背包问题(贪心算法)(代码片段)

...意:这是背包问题,而不是0-1背包问题,背包问题可以用贪心算法进行求解,但0-1无法用贪心算法求解,需要用动态规划算法求解;首先对贪心算法做一下总结,以及它与动态规划算法的区别:贪心算法两个最重要的性质:(1... 查看详情

贪心算法-第一节:贪心算法概述(代码片段)

文章目录一:贪心算法(1)概述(2)特点(3)框架二:典型贪心算法问题(1)无重叠区间①:题目描述②:解题思路③:完整代码(2)活动安排问题①:题目描述... 查看详情

matlab-贪心/贪婪算法(代码片段)

目录一、贪心算法的基本定义和特点二、贪心算法的基本步骤三、实例分析1.问题2.例子与分析3.代码编写(MATLAB版贪心算法)一、贪心算法的基本定义和特点贪心算法的英文是greedyalgorithm,又称贪婪算法,是一种... 查看详情

贪心算法回顾(代码片段)

各位好,贪心算法可以说是处处学到,被面试频频问道,接下来回顾以下,并上代码: 1packagecom.clb.ai.algorithm;23importjava.util.ArrayList;4importjava.util.List;5importjava.util.Map;6importjava.util.TreeMap;78/**9*贪心算法(又称贪婪算法)是指,在... 查看详情

核心算法6贪心算法(代码片段)

贪心算法就是遵循某种既定原则,不断地选取当前条件下最优的选择来构造每一个子步骤的解决方案,直到获得问题最终的求解。在对问题求解时,总是做出在当前看最好的选择。也就是说,不从整体最优上考虑,所做的仅是在... 查看详情

算法_贪心算法篇(代码片段)

...跳跃游戏本文通过跳跃游戏的几个算法例题总结一下相关贪心算法,开始学习的阶段,借鉴好的算法思路并学习,也巩固一下最近学习的算法。(后续遇到贪心算法会续更~~)文章目录LeetCode_跳跃游戏前言一、... 查看详情

算法_贪心算法篇(代码片段)

...跳跃游戏本文通过跳跃游戏的几个算法例题总结一下相关贪心算法,开始学习的阶段,借鉴好的算法思路并学习,也巩固一下最近学习的算法。(后续遇到贪心算法会续更~~)文章目录LeetCode_跳跃游戏前言一、... 查看详情

背包问题(贪心算法)(代码片段)

  贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。  贪心算法还是比较好理解的一个算法,以前我也... 查看详情

贪心算法j题(代码片段)

Ignatiushasjustcomebackschoolfromthe30thACM/ICPC.Nowhehasalotofhomeworktodo.Everyteachergiveshimadeadlineofhandinginthehomework.IfIgnatiushandsinthehomeworkafterthedeadline,theteacherwillreducehisscor 查看详情

算法-贪心算法详解(代码片段)

...答问题转换leetcode55跳跃游戏解答题目概述顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的,从而使最后得到的结果是全局最优的。引入钞票支付问题有1元、5元、10元、20元、100元的钞... 查看详情

算法笔记贪心算法(代码片段)

前言:对于贪心算法的学习主要以增加阅历和经验为主,也就是多做多积累经验,以下通过几个题目来介绍贪心算法的乐趣!文章目录1.贪心算法基本介绍2.题目题一:给定一个由字符串组成的数组strs,必... 查看详情

python贪心算法解决分数背包问题(代码片段)

查看详情

贪心算法关于贪心的一些思考(代码片段)

贪心最主要的问题就是无后效性当前最优解就是全局最优解https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/2073.html#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd; 查看详情

贪心算法(代码片段)

贪心策略  总是做出当前做好的选择。  贪心策略:将问题分成多个子问题;子问题求局部最优解;局部最优解组合成原问题的解。  分类:简单贪心 区间贪心咖啡豆问题 题目描述FatMousepreparedMpoundsofcatfood,readytotrade... 查看详情

算法导论——贪心算法(代码片段)

贪心算法(greedyalgorithm)是指,在每一步都做出当时看起来最佳的选择,也就是局部最优的选择,期望这样的选择能够导向全局最优解。所以并不是所有的问题都能得到全局最优解。        典型的例... 查看详情

贪心算法(java)(代码片段)

贪心算法:贪心算法的主要思想是,在既定的策略下总是能在当前求出当前的最优解(局部最优解)而不是全局最优解。只是这样说可能比较难理解,下面从两道leetcode上的题目入手,来体会贪心算法。1.... 查看详情

图--05---贪心算法prim算法kruskal算法(代码片段)

...自动生成,如何生成可参考右边的帮助文档文章目录贪心算法贪心算法----定义:使用切分定理找到最小生成树的一条边,不断的重复直到找到最小生成树的所有边贪心算法----原理:最小生成树的算法Prim算法切分规则&#... 查看详情

chatgpt教你算法——贪心算法(代码片段)

0.引言在计算机科学中,贪心算法是一种用来解决多阶段决策最优化问题的算法。它的名字来源于贪婪策略,即每一步都选择当前看来是最优的选择,而不考虑未来的影响。这种算法的优点在于它的简单性和速度,... 查看详情