首页 > 编程语言 >贪心算法案例 - 分发饼干

贪心算法案例 - 分发饼干

时间:2024-10-27 17:48:00浏览次数:1  
标签:分发 饼干 孩子 最小 childes 饥饿 child 贪心

贪心算法案例 - 分发饼干(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;
    }
}

标签:分发,饼干,孩子,最小,childes,饥饿,child,贪心
From: https://www.cnblogs.com/lilyflower/p/18508667

相关文章

  • [反悔贪心] Add One 2
    估计是全网最复杂题解。。。反向考虑:将\(a_i\)进行减操作,使得每个数都小于等于0。考虑差分,差分后将区间减转变为单点的加减,但是这样一来每个数都小于等于0的判定就变成了要判定前缀和是否都小于等于0,这不太好处理。考虑增加一个区间加操作,对\([l,r]\)的区间内的\(a_i\)......
  • 代码随想录算法训练营day26|455.分发饼干 376. 摆动序列 53. 最大子序和
    学习资料:https://programmercarl.com/贪心算法理论基础.html#算法公开课贪心算法Part1求局部最优解,最终达到全局最优455.分发饼干(大胃口吃大饼干)点击查看代码classSolution(object):deffindContentChildren(self,g,s):""":typeg:List[int]......
  • 【信奥赛·算法基础】CSP-J C++ 贪心算法示例汇总
    序言为了更清晰的了解贪心算法,我把常见的贪心算法示例做了一个总结,把问题和策略,以及代码示例放到了一起,方便学习和分析,这里示例仅以C++为例,其他语言可根据示例调整即可一、钱币找零问题问题描述:给定不同面额的钱币以及每种面额的数量,用最少的钱币张数凑齐给定的总金额。......
  • 初识调整法(贪心)
    引例:\(证明:圆内接四边形中正方形的面积最大\)$在圆上顺时针任取四点A,B,C,D构成凸四边形,固定对角线AC,分别令B,D在对应的圆弧上自由滑动.$$\becauseS_{四边形ABCD}=\frac{(d_{B-AC}+d_{D-AC})\cdot|AC|}2$$\therefore最大化S_{四边形ABCD}\Rightarrow......
  • 驾驭速度,连接世界 —— CDN内容分发网络的力量
    CDN,即内容分发网络,是一个由遍布全球的高性能加速节点组成的网络架构。它的主要目的是为客户提供快速、安全且可靠的全球内容分发加速服务。通过优化数据传输路径和减少网络延迟,CDN能够显著提升用户体验,确保用户能够迅速且顺畅地访问所需内容。产品优势多场景应用:CDN支持多种......
  • 鸿蒙NEXT应用上架与分发步骤详解
    大家好,我是V哥。今天的文章来聊一聊HarmonyOSNEXT应用上架。当你开发、调试完HarmonyOS应用/元服务,就可以前往AppGalleryConnect申请上架,华为审核通过后,用户即可在华为应用市场获取您的HarmonyOS应用/元服务。HarmonyOS会通过数字证书与Profile文件等签名信息来保证应用的完......
  • [学习笔记] 贪心
    写在前面参考《算法竞赛进阶指南》贪心部分(在[“基础算法”](?)那一部分)。(有些是直接抄的这本书上的。)XK给我们讲课的[课件](?)。2024.10.23模拟赛T2及其题解。(目前是这些)之后应该还有今年暑假集训时的贪心PPT。关于本文中“贪心”的含义本文所言的贪心是“广义”的,即不一......
  • Ftrans供应链文件分发平台:如何确保数据安全与合规性?
    传统制造企业在日常协作中,会涉及到像采购订单和合同、技术规格和图纸、质量标准和检验报告、库存和补货信息等文件分发需求。到在选择供应链文件分发平台时,需要考量以下因素,从而选择出合适的传输方式:1.安全性:确保文件在传输过程中的安全性是至关重要的。需要考虑传输方式是否支持......
  • CDN内容分发网络
    认识CDN◼什么是CDN呢?CDN称之为内容分发网络(ContentDeliveryNetwork或ContentDistributionNetwork,缩写:CDN)CDN它是一组分布在不同地理位置的服务器相互连接形成的网络系统。通过这个网络系统,将Web内容存放在距离用户最近的服务器。可以更快、更可靠地将Web内......
  • EPIC Institute of Technology Round Summer 2024 (Div. 1 + Div. 2) E. Wonderful Tr
    题目链接EPICInstituteofTechnologyRoundSummer2024(Div.1+Div.2)E.WonderfulTree!思路题目要求令所有的av≤......