当前位置: 首页 > news >正文

第一天——贪心算法——分饼干

一、算法介绍

顾名思义,贪心算法或贪心思想采用贪心的策略,保证每次操作都是局部最优的从而使最后得到的结果是全局最优的。

举一个最简单的例子:小明和小王喜欢吃苹果,小明可以吃五个,小王可以吃三个。已知苹果园里有吃不完的苹果,求小明和小王一共最多吃多少个苹果。在这个例子中,我们可以选用的贪心策略为,每个人吃自己能吃的最多数量的苹果,这在每个人身上都是局部最优的。又因为全局结果是局部结果的简单求和,且局部结果互不相干,因此局部最优的策略同样是全局最优的

证明一道题能用贪心算法解决,有时远比用贪心算法解决该题更复杂。一般情况下,在简单操作后,具有明显的从局部到整体的递推关系,或者可以通过数学归纳法推测结果时,我们才会使用贪心算法。

二、题目描述

有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个饱腹度。每个孩子只能吃一个饼干,且只有饼干的饱腹度不小于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱。

1.输入输出样例

输入两个数组,分别代表孩子的饥饿度和饼干的饱腹度。输出可以吃饱的孩子的最大数量。

Input: [1,2], [1,2,3]

Output: 2

2.题解

因为饥饿度最小的孩子最容易吃饱,所以我们先考虑这个孩子。为了尽量使得剩下的饼干可以满足饥饿度更大的孩子,所以我们应该把大于等于这个孩子饥饿度的、且大小最小的饼干给这个孩子。满足了这个孩子之后,我们采取同样的策略,考虑剩下孩子里饥饿度最小的孩子,直到 没有满足条件的饼干存在。 简而言之,这里的贪心策略是,给剩余孩子里最小饥饿度的孩子分配最小的能饱腹的饼干。 至于具体实现,因为我们需要获得大小关系,一个便捷的方法就是把孩子和饼干分别排序。 这样我们就可以从饥饿度最小的孩子和饱腹度最小的饼干出发,计算有多少个对子可以满足条件。

3.完整代码

 def findContentChildren(children: List[int], cookies: List[int])-> int:children.sort()cookies.sort()child_i, cookie_i = 0, 0n_children, n_cookies = len(children), len(cookies)while child_i < n_children and cookie_i < n_cookies:if children[child_i] <= cookies[cookie_i]:child_i += 1cookie_i += 1return child_i

相关文章:

  • STM32F103RC中ADC1和ADC2通道复用
  • 关于AI 大数据模型的基础知识 杂记
  • 紧扣婴幼儿托育服务与管理实训室建设要点:评估与持续改进策略
  • WebSocket与Socket.IO实现简易客服聊天系统全解析
  • 力扣26——删除有序数组中的重复项
  • 特殊配合力(SCA)作为全基因组关联分析(GWAS)的表型,其生物学意义和应用价值
  • Uniapp Android/IOS 获取手机通讯录
  • MySQL SQL Mode及其说明
  • 4.3【LLaMA-Factory实战】教育大模型:个性化学习路径生成系统全解析
  • 4.2【LLaMA-Factory实战】金融财报分析系统:从数据到部署的全流程实践
  • pandas中的数据聚合函数:`pivot_table` 和 `groupby`有啥不同?
  • R1快开门式压力容器操作考试的实操技能考试有哪些注意事项?
  • 多品种与多时间框架策略跨市场交易的实现
  • 高效处理CR
  • RDD的自定义分区器-案例
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 在线打开Word文件,并用前端对话框实现填空填表
  • 自然语言处理 (NLP) 技术发展:从规则到大型语言模型的演进之路
  • 增强学习(Reinforcement Learning)简介
  • 机械臂柔顺控制:阻抗控制、导纳控制和力位混合控制
  • 户用/工商业/高压系统防逆流装置选型指南‌
  • 被取消总统候选人资格,金文洙:将采取政治法律措施讨回公道
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地
  • 图集|俄罗斯举行纪念苏联伟大卫国战争胜利80周年阅兵式
  • 方正证券总裁何亚刚到龄退休,54岁副总裁姜志军接棒
  • 上海“世行对标改革”的税务样本:设立全国首个税务审判庭、制定首个税务行政复议简易程序
  • 国家主席习近平同普京总统出席签字和合作文本交换仪式