C++算法练习day68——455.分发饼干

【C++动态规划 子集状压】2305. 公平分发饼干|1886 给你一个整数数组 cookies ,其中 cookies[i] 表示在第 i 个零食包中的饼干数量。另给你一个整数 k 表示等待分发零食包的孩子数量,所有 零食包都需要分发。在同一个零食包中的所有饼干都必须分发给同一个孩子,不能分开。 分发的 不公平程度 定义为单个孩子在分发过程中能够获得饼干的最大总数。 返回所有分发的最小不公平程度。 阅读详情

题目来源:. - 力扣(LeetCode)

题目思路分析

在这个问题中,我们有两个数组:g 和 s。g 数组表示每个孩子对饼干大小的需求,而 s 数组表示我们拥有的饼干的大小。目标是找出最多有多少孩子可以得到至少满足他们需求的饼干。

为了解决这个问题,我们可以采用贪心算法的思想。首先,对 g 和 s 数组进行排序,这样我们可以从最小的需求和最小的饼干开始匹配。然后,我们使用两个指针 gg 和 ss 分别遍历 g 和 s 数组。对于每个孩子,我们尝试找到一个满足他们需求的饼干。如果找到了,我们就增加满足孩子数量的计数器 ans,并继续为下一个孩子寻找饼干。

代码:

#include <vector>  
#include <algorithm>  
  
class Solution {  
public:  
    int findContentChildren(vector<int>& g, vector<int>& s) {  
        // 对孩子需求和饼干大小进行排序  
        sort(g.begin(), g.end());  
        sort(s.begin(), s.end());  
          
        int ans = 0; // 满足孩子数量的计数器  
          
        // 使用两个指针分别遍历孩子需求和饼干大小  
        for (int gg = 0, ss = 0; ss < s.size() && gg < g.size(); ss++, gg++) {  
            // 尝试找到一个满足当前孩子需求的饼干  
            while (ss < s.size() && g[gg] > s[ss]) {  
                ss++; // 如果当前饼干不满足需求,移动到下一个饼干  
            }  
              
            // 如果找到了一个满足需求的饼干  
            if (ss < s.size()) {  
                ans++; // 增加满足孩子数量的计数器  
            }
        }  
          
        return ans; // 返回满足孩子数量的结果  
    }  
};

知识点摘要

  • 贪心算法:贪心算法是一种在每一步选择中都采取最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。在这个问题中,我们每次都选择最小的饼干来满足当前孩子的需求。
  • 排序:排序是计算机科学中的一个基本问题,它允许我们高效地查找、合并和比较数据。在这个问题中,我们对孩子需求和饼干大小进行了排序,以便能够使用贪心算法。
  • 指针/迭代器:在C++中,指针和迭代器是用于遍历和操作容器(如数组、向量等)中的元素的工具。在这个问题中,我们使用两个指针来分别遍历孩子需求和饼干大小。

通过这个问题,我们学习了如何使用贪心算法来解决一个实际的匹配问题。我们首先对数据进行排序,然后使用两个指针来遍历数据并尝试找到匹配。这种方法不仅简单而且高效,因为它利用了排序后的数据的性质来减少不必要的比较和搜索。此外,我们还复习了排序、指针/迭代器等重要的计算机科学概念。希望这篇文章能够帮助你更好地理解这个问题和贪心算法的应用。

C#上位机实战:借助NetToPLCSim与西门子S7-1200仿真通信全攻略 本文详细介绍了如何使用C#开发上位机程序,通过NetToPLCSim与西门子S7-1200进行仿真通信的全过程。从环境准备、PLC仿真环境搭建、网络配置到C#代码实现,提供了完整的实战指南和常见问题解决方案,帮助开发者快速掌握工业自动化通信技术。 阅读详情

相关推荐

C++游戏开发实战:从零构建局域网联机对战系统(附完整代码解析)

本文详细介绍了如何使用C++开发局域网联机对战游戏系统,涵盖从环境搭建到实战代码解析的全过程。重点讲解了Winsock库的应用、Socket通信原理、服务端与客户端开发技巧,以及性能优化和安全防护方案,帮助开发者快速掌握C++游戏开发的核心技术。

weixin_42524945的博客 445

LeetCode 455. 分发饼干

题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 示例 1: 输入: g = [1,2,3], s = [1,1] 输出: 1 解释: 你有三个孩子和两块小饼干,3个孩子的胃口值分别是

午夜的行人 1473

万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

m0_61985580的博客 3724

[蓝桥杯]分发饼干

​ 分发饼干 题目描述 实现一个算法找到使最多孩子得到满足的分发饼干方法。介绍如下: 家长要将饼干分发给孩子,每个孩子有一个表示胃口的值,每个饼干有一个表示尺寸的值。如果饼干的尺寸与孩子的胃口相等或大于胃口,则将这个饼干分发给这个孩子,孩子能得到满足。 对于给定孩子及饼干的数组,需要将饼干分发给孩子,使最多的孩子得到满足。 例如孩子数组为 [1, 2, 3],饼干数组为 [1, 1],则将尺寸为 1 的饼干分发给胃口为 1 的孩子,这个孩子将得到满足,而另外的两个孩子无法得到满足。那么得到满足的孩子

qq_2937655951的博客 968

大疆OcuSync vs 传统2.4GHz:深度拆解无人机图传射频模块的硬件差异

本文深度对比了大疆OcuSync与传统2.4GHz无人机图传射频模块的硬件差异,涵盖芯片组、天线系统、PCB设计、散热方案及生产测试等核心环节。重点解析OcuSync的全定制SoC芯片、智能MIMO天线阵列及精密PCB布局如何实现革命性性能提升,为无人机图传技术发展提供专业参考。

u5v6w7的博客 806

【STM32H7实战】SDMMC总线优化与FatFs文件系统高效读写技巧

本文详细介绍了STM32H7中SDMMC总线优化与FatFs文件系统高效读写技巧,包括时钟配置、DMA传输、缓存策略等关键优化点。通过实测数据对比,展示了从2.7MB/s提升至11.8MB/s读取速度的优化效果,适用于需要高性能SD卡读写的嵌入式开发场景。

e6f7g8h9i的博客 484

c++贪心算法之分发饼干问题

答:从题面上来看当然没有问题,但是,我们这题主要是求最多小孩能吃到的分法!result:用于存储饼干分出去的数量;分饼干问题已经解决啦!

qq_63176310的博客 1039

btstack ble ota开发笔记(2)-mcuboot移植

紧接上一篇文章,要实现一个完整的ota demo,除了实现ota image的传输通道外,还需要“bootloader”这个角色来帮我们实现ota image的校验、安全、引导以及启动,这里我选择开源的组件mcuboot,下面开始介绍mcuboot在stm32f4-discovery上的移植。首先估算下bootloader & application image的大小,确定好flash的分布情况,因为后续会涉及到flash的操作(读、写、擦除),为了方便程序的编写,各个image area在flash中的起

weixin_38177846的博客 2350

分发饼干(c++题解)

你是一位很棒的 OIer,想要给你的同学一些小饼干。对每个同学 ,都有一个胃口值 ,这是能让同学满足胃口的饼干的最小尺寸;如果 ,你就可以将这个饼干分配给同学 ,这个同学会得到满足。也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题。第二行: 个正整数(在INT_MAX范围),代表每个同学的胃口值。第三行: 个正整数(在INT_MAX范围),代表每块饼干的尺寸。第一行:两个正整数 和 ,分别代表同学的个数和饼干的块数。第1行:1个整数,表示答案。

hb_zhyu的博客 789

SPI 总线信号完整性与时序一致性测试

SPI总线测试的核心目标是验证其电气与时序行为是否满足芯片规格要求,确保通信可靠性

硬核科技 330

【车联网】Automotive 软件过程能力成熟度模型——ASPICE标准入门介绍

ASPICE标准详细定义了与汽车电子软件开发相关的各种术语和概念,包括软件组件、系统集成、测试和验证等。这些定义确保了所有开发团队在使用相同术语时具有一致的理解。

奶爸的编程之路,也就一周冷个三天 2679

LeetCode刷题——455. 分发饼干

题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意: 你可以假设胃口值为正。 一个小朋友最多只能拥有一块饼干。 示例 1: 输入: [1,2,3], [1,1] 输出: 1 解释: 你

日积月累,天道酬勤 786

Onnxruntime之YOLOP部署过程记录

魔改YoloP部署过程记录

如果想成为中心,那么就到中心去吧。 1927

C/C++解OJ题--分发饼干(归并排序)

  小饼干先喂饱小胃口。 当我写出归并排序算法后,小伙伴们可能已经饿坏了。

老胡的博客 2449

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Leetcode 455. 分发饼干 解题思路及C++实现

解题思路: 这道题跟“田忌赛马”是一样的,对于孩子的胃口、饼干的尺寸这两个容器(数组),先进行排序,然后尽量用小尺寸的饼干满足小胃口的孩子,所以会用到贪心策略。 因为题目中并没有说明容器(数组)g和s是否已经是排好序的,所以先进行排序。 给这两个容器各设置一个指针,表示当前遍历的孩子编号、饼干编号。 程序循环停止条件:遍历了所有的孩子,或者遍历完所有的饼干,表示无法再进行分配了。 循环体...

PaniniGu的博客 690

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Leetcode-算法】455. 分发饼干(C++)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j]。如果 s[j]>= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 提示: 1 <= g.length <= 3 * 10^4 0 <= s.length <= 3 * 10^...

sodaxyh的博客 694

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[C++]Leetcode455.分发饼干

455.分发饼干 题目:假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj>= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意:你可以假设胃口值为正。一个小朋友最多只能拥有一块饼干。 示例 1: 输入: [1,2,3], [1,1] 输出: 1 解

cpb____的博客 794

[leetCode]455. 分发饼干

题目 链接:https://leetcode-cn.com/problems/assign-cookies 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 示例 1: 输入: g =

Warms的博客 755

Assign Cookies(C++分发饼干)

Assign Cookies(C++分发饼干)

coolsunxu的博客 184

Leetcode 455.分发饼干(贪心算法)C++解法

难度:简单 【问题描述】 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj >= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意: 你可...

#两个西柚 992

Leetcode 455:分发饼干(最详细的解法!!!)

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj 。如果 sj &gt;= gi ,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意: 你可以假设胃口值为正。 一个小...

coordinate的博客 2465

C++ 贪心算法总结

贪心算法的学习差不多已经两个周了,自己感觉十分的有收获,因为在贪心算法的第一节课,还对贪心了解甚微,上课的时候例题都有些听不懂。刚开始的时候一般就是在课后把老师的例题进行整理,在背包问题、册数问题、最优装载问题等等之后,自己也算是对贪心算法总结出了部分规律。在所有输入完成后(有的时候使用结构体会比较简单,便于表示),对现有数据进行排序(大部分的时候使用sort),最后顺应贪心思想(总是选区部分的最...

qq_43656233的博客 980

深挖C++:类和对象(中)

(先进后出)

xys_678的博客 251

ThunderKittens 深度解析:一个不基于 MLIR 的 C++ 模板 GPU DSL

Triton 是"让更多人能写 GPU kernel",ThunderKittens 是"让会写的人写得更爽"。前者用 MLIR 换易用性,后者用 C++ 模板换可控性。它们不是替代关系,而是覆盖了 GPU 编程光谱的两端。ThunderKittens 的出现,本质上是对"GPU DSL 必须基于 MLIR"这一默认假设的挑战。编译期类型系统本身就可以是一个强大的 DSL 基础设施,不需要中间 IR,不需要黑盒 pass,也能实现 tile 级抽象和零运行时开销。

Maxwell_Newton的博客 349

C++移动构造函数详解

移动构造函数是C++11引入的一种特殊构造函数,用于从临时对象(右值)"窃取"资源来初始化新对象,而不是进行昂贵的深拷贝。char* data;public:// 移动构造函数:参数是右值引用 &&// 关键:把源对象的资源置空。

拒绝AI文,努力在AI时代写出感动人心的好文章 394

跟我学c++中级篇—类型定义的方式

本文系统阐述了编程中类型定义的重要性及c++中的实现方式。重点对比了宏定义、typedef与modern using三种机制,指出using在可读性、灵活性和模板支持上的优势,推荐优先使用。同时提醒开发者注意别名滥用、类型歧义、错误信息冗长等问题,强调统一规范与合理设计。最终结论:在现代c++开发中,应以using为主,兼顾简洁性与可维护性,避免陷入命名混乱与编译困境。

fpcc的专栏 88
上一篇: C++算法练习day67——37.解数独
下一篇: C++算法练习day69——376.摆动序列
Neophyte0608
博客等级 码龄3年 808粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neophyte0608

你的鼓励将使我创作学的更加快乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值