贪心 455. 分发饼干

news/2023/6/7 23:26:58

455. 分发饼干

难度简单636

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

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

贪心思路

本题分发饼干主要利用贪心算法,贪心算法的最主要思想就是局部最优推出全局最优.

什么意思呢 ? 举一个例子 ,现在有一堆钱,每次只能拿一张,每一个人只能拿5次,怎么拿钱数最多.

我想找这个谁都能想出来,每次拿钱都拿最大的--->局部最优, 最终拿完5次,我能拿到的最大钱数-->这个就是全局最优.  

遇到贪心问题,先要将一个大问题划分成多个小问题,然后让每一个小问题达到局部最优,最终解决了一个大问题(叠加小问题)就是全局最优

所以贪心思想可以分为如下几步

  • 将一个大问题拆分成多个小问题
  • 寻找合适的贪心解决方案
  • 找到每一个小问题的最优解-->局部最优解
  • 最终将每一个小问题的局部最优解堆叠成全局最优解.

分发饼干思路

根据题目分析,只要满足饼干尺寸大于小孩胃口尺寸就可以得到满足这个小孩的胃口,最终求的是怎样才能满足更多小孩的胃口.

我们要保证满足更多小孩的胃口,就要保证饼干不被浪费,所以可以有两种思路

第一种思路

  • 大的饼干尺寸先分配给胃口大的小孩,从后往前遍历.->局部最优,尽可能分配饼干给更多的小孩->全局最优

第二种思路

  • 小的饼干尺寸先分配给胃口小的小孩,从前往后遍历.->局部最优,尽可能分配饼干给更多的小孩->全局最优

局部最优解就是 让饼干不浪费,充分利用饼干尺寸喂饱一个尺寸

全局最优 : 尽可能分配饼干给更多的小孩

我使用的思路就是

  • 大饼干先满足胃口大的小孩.(因为要从后往前依次遍历,一定要给两个数组排序)

class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int res = 0;// s:饼干尺寸s[j]  g:胃口的饼干最小尺寸g[i]  满足s[j]>=g[i]int i = g.length - 1;//小孩int j = s.length - 1;//饼干while(i>=0&&j>=0) {if(s[j]>=g[i]) {j--;i--;res++;}else {i--;}}return res;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系郑州代理记账网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙系统究竟是PPT秀还是有真材实料?鸿蒙HarmonyOS开发环境搭建与运行Demo

前言&#xff1a; 对于华为而言&#xff0c;做鸿蒙的最好答案&#xff0c;也许不是为了追求眼前的速胜&#xff0c;而是为了不下牌桌等待机遇。 手机领域&#xff0c;鸿蒙式微。但物联网领域&#xff0c;技术难度并不大&#xff0c;虽然行业仍需要时日才会爆发&#xff0c;但依…

基于多源数据画像的失败用例智能分析

摘要&#xff1a;云原生分布式系统和DevOps开发模式下微服务上线节奏快&#xff0c;按周/按天/按需发布&#xff0c;失败用例的定位分析耗时达数小时或数天&#xff0c;无法满足快速质量反馈的诉求。本文分享自华为云社区《华为云基于多源数据画像的失败用例智能分析》&#xf…

kubernetes 的TCP 数据包可视化

kubernetes 的TCP 数据包可视化介绍k8spacket是用 Golang 编写的工具&#xff0c;它使用gopacket第三方库来嗅探工作负载&#xff08;传入和传出&#xff09;上的 TCP 数据包。它在运行的容器网络接口上创建 TCP 侦听器。当 Kubernetes 创建一个新容器时&#xff0c;CNI 插件负…

【整理】入门Python中的正则表达式

正则表达式(Regular Expression)是一种文本模式&#xff0c;包括普通字符&#xff08;例如&#xff0c;a 到 z 之间的字母&#xff09;和特殊字符&#xff08;称为"元字符"&#xff09;。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。 在碰…

android9.0华为,EMUI 9.0, the latest Android 9 Pie-Based OS | HUAWEI United Kingdom

EMUI 9.0Enable A Quality LifeEMUI 9.0 was born with a minimalist natural design to harmonise technology with humanity. This upgrade enables quality life and gives you an immersive experience with nature. This upgrade enables quality life and gives you an

IPFS 链之云社区:中心化数据存储,将被分布式存储所取代

随着互联技术的飞速发展&#xff0c;数据存储和数据安全成为大数据时代最重要的话题之一。据相关单位统计&#xff0c;2020年全球互联网产生的数据量已经达到了40ZB,这是什么概念呢&#xff1f;我给大家简单普及一下存储空间的知识吧。一部高清电影大概是1GB,1TB等于1024GB&…

TCP拥塞状态机

TCP拥塞状态机1. 状态变迁过程1.1. 整体状态跳转图1.2. 变量解释2. 状态之间跳转的条件2.1. Open -> Disorder2.2. Open -> CWR2.3. Open -> Loss2.4. Open -> Recovery2.5. Loss -> open2.6. Recovery -> open1. 状态变迁过程 在tcp建立连接后&#xff0c;…

只谈链不谈币,区块链会发展成什么样的方向?

数字货币的交易、支付和金融应用才是未来的关键&#xff0c;而目前存在的区块链处理速度之类的区块链实体应用场景中存在的大家讨论的问题&#xff0c;可能在未来几年都将不是问题。 编者按&#xff1a;本文来自彩云区块链&#xff0c;作者&#xff1a;cncoin 关于链和币这两…