力扣455.分发饼干

力扣(leetcode)第455题分发饼干(Python) 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;4.如果饼干尺寸>=胃口值,则gi,si指针均+1,否则si+1,这样可以满足更多的孩子吃到饼干,gi的值就是孩子的个数。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。输入: g = [1,2,3], s = [1,1]输入: g = [1,2], s = [1,2,3] 阅读详情

题目

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。

 

示例 1:

输入: g = [1,2,3], s = [1,1]
输出: 1
解释: 
你有三个孩子和两块小饼干,3 个孩子的胃口值分别是:1,2,3。
虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。
所以你应该输出 1。

示例 2:

输入: g = [1,2], s = [1,2,3]
输出: 2
解释: 
你有两个孩子和三块小饼干,2 个孩子的胃口值分别是 1,2。
你拥有的饼干数量和尺寸都足以让所有孩子满足。
所以你应该输出 2。

提示:

  • 1 <= g.length <= 3 * 104
  • 0 <= s.length <= 3 * 104
  • 1 <= g[i], s[j] <= 231 - 1

思路

为了满⾜更多的⼩孩,就不要造成饼⼲尺⼨的浪费。
⼤尺⼨的饼⼲既可以满⾜胃⼝⼤的孩⼦也可以满⾜胃⼝⼩的孩⼦,那么就应该优先满⾜胃⼝⼤的。
这⾥的局部最优就是⼤饼⼲喂给胃⼝⼤的,充分利⽤饼⼲尺⼨喂饱⼀个,全局最优就是喂饱尽可能多的⼩孩。
可以尝试使⽤贪⼼策略,先将饼⼲数组和⼩孩数组排序。
然后从后向前遍历⼩孩数组,⽤⼤饼⼲优先满⾜胃⼝⼤的,并统计满⾜⼩孩数量。
如图:
这个例⼦可以看出饼⼲ 9 只有喂给胃⼝为 7 的⼩孩,这样才是整体最优解,并想不出反例,那么就可以撸代码了。
C++代码整体如下:
// 版本⼀
class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(), g.end());
sort(s.begin(), s.end());
int index = s.size() - 1; // 饼⼲数组的下标
int result = 0;
for (int i = g.size() - 1; i >= 0; i--) { // 遍历胃⼝
if (index >= 0 && s[index] >= g[i]) { // 遍历饼⼲
result++;
index--;
 }
 }
return result;
 }
};
从代码中可以看出我⽤了⼀个 index 来控制饼⼲数组的遍历,遍历饼⼲并没有再起⼀个 for 循环,⽽是采⽤⾃减的 ⽅式,这也是常⽤的技巧。
有的同学看到要遍历两个数组,就想到⽤两个 for 循环,那样逻辑其实就复杂了。
注意版本⼀的代码中,可以看出来,是先遍历的胃⼝,在遍历的饼⼲,那么可不可以 先遍历 饼⼲,在遍历胃⼝
呢?
其实是不可以的。
外⾯的 for 是⾥的下标 i 是固定移动的,⽽ if ⾥⾯的下标 index 是符合条件才移动的。
如果 for 控制的是饼⼲, if 控制胃⼝,就是出现如下情况 :
if ⾥的 index 指向 胃⼝ 10, for ⾥的 i 指向饼⼲ 9,因为 饼⼲ 9 满⾜不了 胃⼝ 10,所以 i 持续向前移动,⽽
index ⾛不到 s[index] >= g[i] 的逻辑,所以 index 不会移动,那么当 i 持续向前移动,最后所有的饼⼲都匹配
不上。
所以 ⼀定要 for 控制 胃⼝,⾥⾯的 if 控制饼⼲。
也可以换⼀个思路,⼩饼⼲先喂饱⼩胃⼝

代码

class Solution {
public:
int findContentChildren(vector<int>& g, vector<int>& s) {
sort(g.begin(),g.end());
sort(s.begin(),s.end());
int index = 0;
for(int i = 0; i < s.size(); i++) { // 饼⼲
if(index < g.size() && g[index] <= s[i]){ // 胃⼝
index++;
 }
 }
return index;
 }
};

Leetcode——455.分发饼干——题解+代码实现 一、题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i ,都有一个胃口值gi ,这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j ,都有一个尺寸 sj。如果 sj>= gi,我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 注意: 你可以假设胃口... 阅读详情

相关推荐

LTM4644 四通道并联 16A 输出配置:PCB 布局 3 要点与热仿真验证

本文详细解析了LTM4644四通道并联实现16A输出的PCB布局与热管理要点,包括电流路径对称性设计、热优化布局技巧和接地系统优化。通过实际工程案例,展示了如何确保电流均流、热分布均衡及长期可靠性,为FPGA、ASIC和服务器主板供电设计提供高效解决方案。

weixin_33314040的博客 397

Leetcode 455. 分发饼干

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

尚未佩妥剑 转眼便江湖 375

ESP32蓝牙广播数据自定义指南:让你的设备更容易被手机发现

本文详细介绍了如何通过自定义ESP32蓝牙广播数据提升设备在手机端的可发现性。从广播数据结构、扫描响应优化到跨平台兼容性设置,提供了全面的技术指南和实战代码示例,帮助开发者解决智能硬件开发中的蓝牙连接难题。

weixin_29172201的博客 271

分发饼干(贪心算法+图解)

在整个遍历的过程中,由于饼干无论能不能分给孩子,都需要i++,因为如果饼干不能分给当前的孩子,那么i++直接换下一个饼干尝试,如果饼干分给了当前孩子,那么还是要i++,同时index++,取下一块饼干分给下一个孩子,故而整个遍历的时间是所有饼干的遍历时间。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。首先对饼干的大小个孩子们的胃口大小从到大排序,遍历饼干数组,你有两个孩子和三块小饼干,2个孩子的胃口值分别是1,2。

qq_58158950的博客 1116

微信图片.dat文件解密实战:用Python一键转PNG(附完整代码)

本文详细介绍了如何通过Python解密微信图片.dat文件并转换为PNG格式的完整教程。文章深入解析了微信.dat文件的异或加密原理,提供了自动检测密钥的Python脚本,并分享了批量解密和性能优化的实用技巧,帮助用户轻松恢复和整理微信聊天图片。

weixin_29096377的博客 465

IoT 平台架构全景图:从设备到 AI 的完整技术体系深度解析

随着物联网设备规模进入百万级时代,IoT 平台架构已经从简单的设备接入系统演变为完整的数据平台。本文从系统架构师视角,深度解析 IoT 平台的完整技术体系,包括设备接入、MQTT 通信、消息流平台、数据平台与 AI 决策系统,并结合主流云平台实践,构建从设备到 AI 的完整 AIoT 架构认知。

moton2017的博客 856

【贪心专题】—— 贪心算法入门篇

通俗易懂的贪心入门【不要太贪心,520快乐】

欢迎来到我的世界 6742

BiSeNet:面向实时语义分割的双边网络

BiSeNet 系列重新定义了实时语义分割的范式“不要在速度和精度之间妥协——用架构创新,两者兼得。V1:提出双边解耦思想,启发后续大量工作;V2:通过极致轻量化,证明小模型也能高精度;V3(工业版):推动端侧 AI 落地,成为行业标准之一。如今,BiSeNet 已成为嵌入式视觉系统的默认选择,其设计理念(解耦、轻量、融合)被广泛应用于目标检测、姿态估计等领域。

浩瀚之水的专栏 267

455. 分发饼干

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。你有三个孩子和两块小饼干,3 个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2 个孩子的胃口值分别是 1,2。,这是能让孩子们满足胃口的饼干的最小尺寸;你拥有的饼干数量和尺寸都足以让所有孩子满足。,我们可以将这个饼干。所以你应该输出 1。所以你应该输出 2。

mrjieke6的博客 653

基于机器学习的网络安全态势感知模型研究与实现

基于机器学习的网络安全态势感知模型研究与实现 1. 背景介绍 1.1 网络安全态势感知的重要性 在当今互联网时代,网络安全已经成为一个至关重要的话题。随着网络攻击手段的不断升级和演变,传统的被动防御方式已经难以满足日益

AI大模型应用之禅 1582

【SpringBoot 3.x 第56节】再见 Feign?原生 HTTP 接口强势上位,这才是微服务调用的正确姿势!

🏆本文收录于《滚雪球学SpringBoot 3》,专门攻坚指数提升,本年度国内最系统+最专业+最详细(永久更新)。    本专栏致力打造最硬核 SpringBoot3 从零基础到进阶系列学习内容,🚀均为全网独家首发,打造精品专栏,专栏持续更新中…欢迎大家订阅持续学习。 如果想快速定位学习,可以看这篇【SpringBoot3教程导航帖】,你想学习的都被收集在内,快速投入学习!!两不误。    若还想学习更多,可直接前往《滚雪球学SpringBoot(全版本合集)》,涵盖SpringBoot所有版本教学文章

**My Coding Family** 1017

贪心算法-分饼干问题

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

weixin_30509393的博客 1174

《拉依达的嵌入式\驱动面试宝典》—Linux篇(八)_Linux驱动编程

《拉依达的嵌入式\驱动面试宝典》 整合了所有我认为可能遇到的技术面试问题。所有问题及其答案均是我个人学习后查阅资料总结,每个回答都做了仔细的分析,在嵌入式及其驱动面试相关问题解析做到全网独一无二。学习或者转行到嵌入式、驱动开发领域学习的不二之选

拉依达不拉跨的博客 319

力扣网 | 每日打卡题 | 455. 分发饼干 | 圣诞节的饼干

文章目录题目解析 题目 455. 分发饼干 - 力扣(LeetCode) 解析 分发饼干 - 分发饼干 - 力扣(LeetCode) class Solution { public: int findContentChildren(vector<int>& g, vector<int>& s) { sort(g.begin(), g.end()); sort(s.begin(), s.end()); int nu

我是一块小石头 296

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LeetCode[455] 分发饼干 (贪心)

本题目摘自 LeetCode 455 原题 分发饼干 1. 目标:需要满足尽可能多的孩子,计数 counter = 0 2. 满足条件:当前饼干尺寸 sj 要大于等于孩子胃口值 gi,即 sj >= gi 3. 局部最优:当前饼干尺寸刚好满足当前孩子的胃口(最大尺寸饼干发给胃口最大的孩子),则 counter + 1 4. 终止条件:没有饼干可发,或者没有孩子可发

Caso_卡索的博客 411

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

leetcode 455. 分发饼干

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

Sophia_fez的博客 643

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

力扣455-分发饼干(贪心入门题 Java题解)

此题是力扣中贪心的简单题。

ItDaChuang的博客 728

455. 分发饼干(力扣LeetCode)

对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;对每个孩子,只要有能满足他胃口的饼干存在,就分配给他,并准备为下一个胃口稍小的孩子分配更小的饼干。通过贪心策略,它首先排序孩子的胃口值和饼干的尺寸,然后依次尝试用尽可能小的饼干去满足尽可能多的孩子。注意这里饼干是从大到小分配的,这有助于确保更大的饼干(可能过于“奢侈”)不会被分配给胃口小的孩子,从而可以留给胃口更大的孩子,确保更多孩子满足。虽然你有两块小饼干,由于他们的尺寸都是1,你只能让胃口值是1的孩子满足。

m0_73841621的博客 804

LeetCode455.分发饼干

LeetCode455.分发饼干

Love Peace 1158

LeetCode第455题分发饼干

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

LiuXiaoXueer的博客 1065

力扣第455题---分发饼干

leetcode刷题笔记 力扣第455题—分发饼干 题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子 最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。 来源:力扣(LeetCode) 链接:https://leetcode-cn.co

huiNB的博客 583

Leetcode455 分发饼干

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

lisa2017_的博客 143

leetcode 力扣 455.分发饼干

题目描述: 解题方法: 快排+贪心算法: 在这道题里面为了满足更多孩子的胃口,我们应该优先满足胃口小的孩子,我们可以先调用C语言cmath.h库的快排函数把孩子的胃口和食物数量的多少从小到大排序,再用贪心的方法把饼干进行分配 代码: int com(int*a,int*b) { return *a-*b; } int findContentChildren(int* g, int gSize, int* s, int sSize) { qsort(g, gSize, sizeof(in

fatherofli的博客 409

LeetCode:455. 分发饼干——贪心算法

LeetCode:455. 分发饼干 ——贪心算法 贪心算法是在每个阶段选取局部最优解,最终得到全局最优解的一种思想。 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。

Super algorithm 的博客,技术爱好者。 1180

力扣Leetcode之Java解题455分发饼干

leetcode刷题之455分发饼干Java解题

小李子Lee 818

力扣455 分发饼干 java实现

假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。虽然你有两块小饼干,由于他们的尺寸都是 1,你只能让胃口值是 1 的孩子满足。,这个孩子会得到满足。你的目标是满足尽可能多的孩子,并输出这个最大数值。你有三个孩子和两块小饼干,3 个孩子的胃口值分别是:1,2,3。你有两个孩子和三块小饼干,2 个孩子的胃口值分别是 1,2。,这是能让孩子们满足胃口的饼干的最小尺寸;你拥有的饼干数量和尺寸都足以让所有孩子满足。,我们可以将这个饼干。所以你应该输出 1。所以你应该输出 2。

m0_58648798的博客 1150
上一篇: pta题集——找鞍点
下一篇: pta题集--数组区间差集
hellooooooi
博客等级 码龄3年 132粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值