LeetCode 455. 分发饼干(Assign Cookies)题解:贪心 + 双指针
LeetCode 455. 分发饼干Assign Cookies题解贪心 双指针【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcodeLeetCode 455「分发饼干」Assign Cookies是一道经典的贪心算法入门题也是本仓库leetcode 解题之路easy 题集中的代表题目。本文以仓库内 problems/455.AssignCookies.en.md 与 problems/455.AssignCookies.md 为主体完整还原题目描述、贪心策略推导、双指针算法流程与 JS / Python 双语言实现并结合仓库 thinkings/greedy.md 中对贪心策略的理论总结讲清为什么排序后按顺序匹配就是最优解读完即可举一反三迁移到同类资源分配 / 覆盖类问题。题目回顾假设你是一位很棒的家长想要给孩子们一些小饼干。规则如下每个孩子最多只能得到一块饼干对每个孩子 i都有一个胃口值gi即能让该孩子满足的饼干最小尺寸每块饼干 j 都有一个尺寸sj如果sj gi就可以把饼干 j 分给孩子 i该孩子会得到满足胃口值均为正数。目标尽可能满足越多数量的孩子并输出这个最大数值。两个示例输入输出解释g [1,2,3],s [1,1]1两块尺寸为 1 的饼干只能满足胃口为 1 的孩子g [1,2],s [1,2,3]2饼干数量和尺寸足以让所有孩子满足前置知识为什么这道题用贪心本题所需的两个前置知识分别是贪心算法与双指针仓库 thinkings/greedy.md 对此有系统的理论说明。贪心策略的核心定义是在对问题求解时总是做出在当前看来最好的选择即做出某种意义上的局部最优解而不从整体最优的角度去全局搜索。贪心并不是对任何问题都能得到整体最优解典型的反例是硬币找零关键取决于贪心策略的选择。一个可用的贪心策略必须具备无后效性某个状态以前的过程不会影响以后的状态后续决策只与当前状态有关——这一点与动态规划相同。贪心与动态规划一样大多数情况下都用来处理极值问题最大化、最小化而本题要求满足孩子的最大数量正是一个典型的极值问题。思路分析小的饼干优先匹配小的胃口本题可以这样贪心求解给一个孩子的饼干应当尽量小并且能满足孩子把大饼干留来满足胃口大的孩子。因为胃口小的孩子最容易得到满足所以优先满足胃口小的孩子的需求然后按照从小到大的顺序尝试用每块饼干去匹配孩子。为什么这个贪心策略是安全的局部最优即全局最优孩子的胃口g排序后胃口最小的孩子g[0]最难替代——能被大饼干满足的一定也能被至少同样大的饼干满足反过来一块小饼干如果连最小胃口的孩子都满足不了那它一定满足不了任何胃口更大的孩子可以直接放弃因此用当前最小尺寸的饼干去尝试当前最小胃口的孩子成功则双方都向前推进资源不浪费失败则该饼干对后续所有孩子都无效直接丢弃。每一步都不牺牲未来的可能性具备无后效性。算法步骤将需求因子数组g和饼干尺寸数组s分别从小到大排序使用贪心思想并配合两个指针gi指向当前待满足的孩子胃口值sj指向当前尝试的饼干饼干尺寸每块饼干只尝试一次若s[sj] g[gi]说明该饼干能满足当前孩子两个指针同时后移满足数 1接着尝试满足下一个孩子否则说明该饼干太小换下一块更大的饼干继续尝试sj任一个数组遍历完毕即终止返回累计的满足数量。关键点先排序再贪心只有两个数组都从小到大有序才能保证当前最小饼干对当前最小胃口的比较是全局最优的贪心决策双指针保证了每块饼干至多被扫描一次整体呈现线性扫描结构。代码实现JavaScript 版来自英文文档仓库英文版 problems/455.AssignCookies.en.md 给出的 JS 实现/** * param {number[]} g * param {number[]} s * return {number} */ const findContentChildren function (g, s) { g g.sort((a, b) a - b); s s.sort((a, b) a - b); let gi 0; // 胃口值 let sj 0; // 饼干尺寸 let res 0; while (gi g.length sj s.length) { // 当饼干 sj 胃口 gi 时饼干满足胃口更新满足的孩子数并移动指针 if (s[sj] g[gi]) { gi; sj; res; } else { // 当饼干 sj 胃口 gi 时饼干不能满足胃口需要换大的 sj; } } return res; };Python 版来自中文文档仓库中文版 problems/455.AssignCookies.md 额外提供了 Python 实现写法更为精简——当饼干满足胃口时同时移动孩子指针并计数无论是否满足饼干指针都前进不满足说明饼干太小同样要丢弃class Solution: def findContentChildren(self, g: List[int], s: List[int]) - int: g.sort() s.sort() count gIdx sIdx 0 while gIdx len(g) and sIdx len(s): if s[sIdx] g[gIdx]: gIdx 1 count 1 sIdx 1 return count两种语言实现遵循完全相同的贪心 双指针逻辑可相互对照理解。复杂度分析时间复杂度O(NlogN)主要开销来自对g和s两个数组的排序排序完成后的双指针扫描为 O(N)被排序项支配。空间复杂度O(1)只使用常数个指针变量与计数器未引入与输入规模相关的额外空间。在仓库中的定位与延伸阅读本题收录于本仓库的 easy 题集见 collections/easy.md英文版见 collections/easy.en.md并已列入仓库根目录 README.md 的 LeetCode 题解索引题号 0455。若想进一步加深对贪心算法的理解建议阅读仓库专题文章 thinkings/greedy.md英文版 thinkings/greedy.en.md。该文指出LeetCode 上的贪心题目大多用于处理极值问题其中覆盖类问题如 45. 跳跃游戏 II、1024. 视频拼接 等对应的中文题解见仓库 problems 目录同样可以采用贪心求解且与本题共享维护最远/最优可达边界、逐步贪心推进的底层套路同时也要注意贪心的难点在于证明局部最优解可以推出全局最优解这正是本题最小饼干匹配最小胃口策略的价值所在。【免费下载链接】leetcodeLeetCode Solutions: A Record of My Problem Solving Journey.( leetcode题解记录自己的leetcode解题之路。)项目地址: https://gitcode.com/gh_mirrors/le/leetcode创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Hindsight 长期记忆接入 Hermes Desktop:3 步在 Settings 里给 Agent 装上跨会话记忆

Hindsight 长期记忆接入 Hermes Desktop:3 步在 Settings 里给 Agent 装上跨会话记忆

Hindsight 长期记忆接入 Hermes Desktop:3 步在 Settings 里给 Agent 装上跨会话记忆 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight 你的 Agent 是不是每次开新对话…

2026/9/22 3:36:10 阅读更多 →
Multi-Agent仿真评估电子信息装备作战效能实践

Multi-Agent仿真评估电子信息装备作战效能实践

简介:一份PDF格式的学术文献,主题为基于多智能体的电子信息装备体系作战效能评估方法,适合装备论证、体系评估、复杂电子系统仿真方向的研究人员与工程技术人员阅读。文献阐述了电子信息装备体系及效能评估概念,分析了现有评估方法…

2026/9/21 13:43:42 阅读更多 →
喜马拉雅音频下载神器xmly-downloader-qt5:Go+Qt5打造VIP专辑下载器的完整入门指南

喜马拉雅音频下载神器xmly-downloader-qt5:Go+Qt5打造VIP专辑下载器的完整入门指南

喜马拉雅音频下载神器xmly-downloader-qt5:GoQt5打造VIP专辑下载器的完整入门指南 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloade…

2026/9/21 17:47:16 阅读更多 →

最新新闻

SSM框架实战:高校学报管理系统设计与实现解析

SSM框架实战:高校学报管理系统设计与实现解析

1. 项目概述与选型背景第一次看到“SSM商丘工学院学报管理系统”这个标题时,我其实挺有感触的。高校内部的业务管理系统,尤其是学报管理这种带有明确流程特征的场景,一直是SSM框架最典型的应用土壤。Spring、SpringMVC、MyBatis这三位老搭档组…

2026/9/23 3:58:31 阅读更多 →
AI日报背后的工程实践:Agent架构、密钥安全与LLM输出稳定性

AI日报背后的工程实践:Agent架构、密钥安全与LLM输出稳定性

1. 从一份日报标题说起:AI 日报到底在记录什么看到"AI 日报 2026-09-18"这个标题,很多人第一反应是"这不就是个新闻汇总吗"。但如果你真的每天跟踪 AI 领域的动态,就会知道一份有价值的日报远不止是链接堆砌。它本质上是…

2026/9/23 3:58:31 阅读更多 →
为长时运行的 AI 编码代理设计持久化 Harness:OpenAI 风格仓库模板 AGENTS.md 深度解析

为长时运行的 AI 编码代理设计持久化 Harness:OpenAI 风格仓库模板 AGENTS.md 深度解析

为长时运行的 AI 编码代理设计持久化 Harness:OpenAI 风格仓库模板 AGENTS.md 深度解析 【免费下载链接】learn-harness-engineering Harness engineering beginner tutorial, from 0 to 1 项目地址: https://gitcode.com/gh_mirrors/le/learn-harness-engineerin…

2026/9/23 3:58:31 阅读更多 →
穿越火线怎么调烟雾头图解原理:5分钟吃透底层逻辑

穿越火线怎么调烟雾头图解原理:5分钟吃透底层逻辑

穿越火线怎么调烟雾头图解原理:5分钟吃透底层逻辑 CF手游里的烟雾弹为啥总是飘歪?官方教程只告诉你“按住技能键”,却从不解释背后的物理引擎。这种 官方文档太长抓不住重点 的体验,让无数玩家在实战中只能靠玄学猜。今天咱们不背口诀,直接上…

2026/9/23 3:58:31 阅读更多 →
PlantUML 内部 DITAA 引擎解析:`ascii2image` 核心包与 ASCII 艺术到图像的转换管线

PlantUML 内部 DITAA 引擎解析:`ascii2image` 核心包与 ASCII 艺术到图像的转换管线

开发工具文档 【免费下载链接】plantuml Generate diagrams from textual description 项目地址: https://gitcode.com/gh_mirrors/pl/plantuml 点击查看 免费下载 本篇技术指南聚焦于 PlantUML 仓库中内置的 ditaa(Diagrams Through ASCII Art&#xf…

2026/9/23 3:58:30 阅读更多 →
代码世界模型:从编码智能体到理解世界的数字大脑

代码世界模型:从编码智能体到理解世界的数字大脑

直接说结论:代码世界模型这个提法,乍一听很像概念炒作,但你把它拆开看,其实是把“让大模型通过写代码来理解世界”这个路线推到极致的一种尝试。我最近半年一直在折腾编码智能体相关的项目,从最早的代码补全&#xff0…

2026/9/23 3:57:30 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →