【笔记】力扣 455. 分发饼干——贪心、利用双指针优化双层循环

news/2025/3/28 8:42:18/文章来源:https://www.cnblogs.com/xiins/p/18784996
  • 455. 分发饼干

    简单

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

    对每个孩子 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

思路:优先用小饼干满足胃口小的孩子 或 优先用大饼干满足胃口大的孩子

优化前(超时)

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {int cnt=0;sort(g.begin(),g.end());sort(s.begin(),s.end());int pre_j=s.size()-1;for (int i=g.size()-1;i>=0;i--) {int j=pre_j;while (j>=0) {if (s[j]>=g[i]) {cnt++;pre_j--;break;}j--;}}return cnt;}
};

题解(优化后)

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int child = 0;int cookie = 0;// 双指针遍历while (child < g.size() && cookie < s.size()) {if (s[cookie] >= g[child]) {// 满足条件,孩子数量加1child++;}// 无论是否满足条件,饼干指针都后移cookie++;}return child;}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/902431.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASE11N45-ASEMI智能家居专用ASE11N45

ASE11N45-ASEMI智能家居专用ASE11N45编辑:ll ASE11N45-ASEMI智能家居专用ASE11N45 型号:ASE11N45 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:11A 漏源击穿电压:450V RDS(ON)Max:0.39Ω 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道M…

sql 保留两位小数并强制向前进位的方法

使用CEILING函数 CEILING函数会返回大于或等于指定数值的最小整数值 例如,保留两位小数:select CEILING(0.0132*100)/100输出结果 这里,我们将数字乘以100(因为我们想保留两位小数),使用CEILING函数确保向上进位,然后再除以100以恢复原来的数值范围。

可行性分析[3]

第1章 系统分析 1.1 可行性分析 1.1.1 技术可行性分析 1.1.2 经济可行性分析 1.1.3 社会可行性分析 1.1.4 法律可行性分析 1.2 系统流程分析 1.2.1 系统开发总流程 1.2.2 登录流程 1.2.3 系统操作流程 1.2.4 系统性能分析 第1章 可行性分析 1.1可行性分析 随着生活水平的提高,…

PLM项目管理软件的未来:自动化与智能化的发展方向

PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营过程中扮演着至关重要的角色。它整合了从产品概念设计到退役处理的全流程信息,助力企业提升效率、降低成本并提高产品质量。随着科技的飞速发展,自动化与智能化成为 PLM 项目管理软件未来的核心发展方向…

研发效率提升30%的秘诀:PLM系统需求管理的6步工作法

在企业的研发过程中,提升效率是一个永恒的追求。研发效率的高低,直接影响着产品推向市场的速度,进而决定企业在竞争中的地位。而在众多影响研发效率的因素中,需求管理无疑是关键一环。PLM(产品生命周期管理)系统作为整合产品全生命周期信息的重要工具,其需求管理功能若能…

数字化转型,目的是为了转型还是数字化?

谢邀,这个问题问得很到位啊! 很多老板和员工都搞不明白,数字化转型到底是在搞什么?是单纯把业务搬到线上?还是整个公司要脱胎换骨? 今天咱们就掰开揉碎了聊,结合我这些年踩过的坑和看到的案例,给大家尽可能讲明白数字化转型到底是什么—— 先说结论:数字化转型的本质是…

Qt 有时嵌入的控件和窗体背景颜色不一样可设置 autoFillBackGround 这个属性

控件本身和作用它的布局都设置下这个属性,应该就可以解决控件颜色不一致的问题了吧。

发现《双影奇境》隐藏关卡!通关就获得独家情报?!

《双影奇境》真是太太太火了! 小编身边十个人里八个人都在玩!而且每个人都赞不绝口,狂夸里面的画面和关卡设计精美又好看。 最近甚至有人发现了地狱级的隐藏关卡!不仅挑战性拉满,通关奖励居然还包含了制作人亲笔签名的瑞典工作室邀请函! 今天小编就来为你解开这一神秘关卡…

远程控制中的云电脑是什么意思?1分钟学会用

很多常用我们ToDesk远程控制的朋友们或许会注意到无论是在PC端还是移动端中都出现有【云电脑】【来云电脑爽玩-新用户免费1小时】这些词句等信息。那么这究竟是代表什么意思呐?云电脑是什么又怎么用呐?为什么要增加云电脑?以下小T就为大家科普下!什么是云电脑?为什么要设云…

WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template

本文介绍了 WPF 中关于各种 Template 的用法。WPF 你真的会写 XAML 吗?浅谈 ControlTemplate 、DataTemplate 和其它 Template本文希望从写死的代码慢慢引入 WPF 的一些机制。一、Button 难题 我们想要修改 Button 的背景色但是效果非常不理想,默认的 Button 样式是完全无法给…