贪心算法案例 - 分发饼干

贪心算法案例 - 分发饼干(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;
    }
}
posted @   LilyFlower  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
点击右上角即可分享
微信分享提示