贪心算法案例 - 分发饼干
贪心算法案例 - 分发饼干(Easy)
1. 题目描述
有一群孩子和一堆饼干,每个孩子有一个饥饿度,每个饼干都有一个大小。每个孩子只能吃最多一个饼干,且只有饼干的大小大于孩子的饥饿度时,这个孩子才能吃饱。求解最多有多少孩子可以吃饱?
2. 输出案例
输入两个数组,分别代表孩子的饥饿度和饼干的大小。输出最多有多少孩子可以吃饱的数量。
Input: [1,2], [1,2,3]
Output: 2
在上面的输入案例中,可以给孩子分配[1, 2], [1, 3], [2, 3] 这三种组合的任意一种。
3. 分析
要求最多有多少个孩子可以吃饱,也就是说每个孩子尽可能的被分配到和它饥饿度近似的饼干。由于饥饿度最小的孩子可以吃最少的饼干就能吃饱,因此我们可以首先考虑饥饿度最小的孩子。为了尽量使得剩下的饼干可以满足饥饿度更大的孩子,所以我们应该把大于等于这个孩子饥饿度的、且大小最小的饼干给这个孩子。满足了这个孩子之后,我们采取同样的策略,考虑剩下孩子里饥饿度最小的孩子,直到没有满足条件的饼干存在。
本题的贪心策略:给剩余孩子中最小饥饿度最小的孩子分配最小的,能够满足该孩子的饼干。
4. 代码
class Solution {
public int findContentChildren(int[] childes, int[] cookies) {
// 对孩子的饥饿度进行排序
Arrays.sort(childes);
// 对于每个饼干的大小进行排序
Arrays.sort(cookies);
int cookie = 0, child = 0; // cookie表示当前饼干的索引, child表示当前孩子的索引
while (child < childes.length && cookie < cookies.length) {
// 当前该饼干能够满足当前该孩子,选择下一个孩子和饼干继续判断
if (childes[child] <= cookies[cookie]) {
child++;
cookie++;
} else { // 当前孩子不能满足当前该孩子,选择更大的饼干
cookie++;
}
}
return child;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫