力扣455.分发饼干(java)-贪心算法思想及基本步骤
文章目录
- 贪心算法核心思想
- 基本步骤
- 455.分发饼干(Java)
- 1.需要考虑的问题
- 2.方案(序号分别与问题对应)
贪心算法核心思想
贪心算法的基本思想是每一步都做出当时看起来最佳的选择,可以理解为,贪心算法在求解过程中的每一步都选择一个局部最优的策略,把整个问题的规模压缩,,最后把每一步的结果合并起来形成最终的节,希望通过局部最优解得到全局的最优解。
基本步骤
(1)从一个初始解开始;
(2)采用迭代的过程,当可以向目标前进一步时,就根据局部最优的策略,得到一个部分解,将问题规模缩小;
(3)将所有的解综合起来。
455.分发饼干(Java)
接下来通过求解力扣上分发饼干这道题,加深对贪心的理解。
1.需要考虑的问题
- 核心问题为尽可能满足越多数量的孩子,寻找局部最优解(求解重点);
- 如何将饼干的大小和孩子的胃口进行比较;
2.方案(序号分别与问题对应)
结合贪心的思想:将大问题分解为每个小问题,为每个小问题做出最优的解,再将所有解结合就是整个问题的解。
- 根据贪心的思想,先将整个问题拆分成为每个孩子分饼干,同时需要分配的孩子尽可能多,那么就需要合理利用资源(不能浪费饼干),采取的策略是大胃口对大饼干,小胃口对小饼干(反例:如果小胃口对应大饼干,虽然能够满足小胃口,但是小饼干却不能满足大胃口的孩子)。
- 为了方便比较(大对大,小对小),将两个数组事先排序即可,全都从头遍历,或者全都从尾开始遍历。
- 具体实现(java):
class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s); //对两个数组排序int maxKid = 0; //记录孩子的数量int gNode=0; //孩子胃口数组的下标for (int i = 0; i < s.length && gNode < g.length; i++) {if (s[i] >= g[gNode]) { //如果饼干大小大于孩子的胃口gNode++; maxKid++; //说明可以将这个孩子喂饱}}return maxKid; //返回结果}
}
力扣455.分发饼干(java)-贪心算法思想及基本步骤相关推荐
- 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)
看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...
- leetcode 455. 分发饼干(贪心算法)
假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j,都有一个尺寸 ...
- 力扣455. 分发饼干(JavaScript)
//从后往前遍历,先找到能满足的最大胃口的小孩 var findContentChildren = function(g, s) {g.sort((a,b)=>a-b)s.sort((a,b)= ...
- LeetCode 455. 分发饼干(贪心)
1. 题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j , ...
- leetcode455. 分发饼干(贪心算法)
假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...
- 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划
文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...
- 力扣:455. 分发饼干
题目链接: 力扣:455. 分发饼干 class Solution {//贪心算法 public:int findContentChildren(vector<int>& g, v ...
- 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和
贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...
- Java实现 LeetCode 455 分发饼干
455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 ...
最新文章
- 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
- 数据结构-String、char
- OSU!(bzoj 4318)
- python模块之re正则表达式
- Java集合---HashSet的源码分析
- Python 动态获取对象的属性和方法(内含inspect)
- Zeusee 开源移动端车型识别系统HyperVID
- var和function谁先优先执行_浅谈JavaScript 的执行顺序
- oracle中导入,ORACLE数据导入
- VScode设置console.log('')快捷键
- 电脑关机很慢是怎么回事
- FPGA与CPLD的区别
- Bigemap中添加离线地图数据包 教程
- 机器视觉是什么,未来前景怎么样?
- php写超级简单的登陆注册页面(适用期末作业至少要求带有数据库的)
- 全民热议“10万彩礼结不了婚”的背后,百合网做了什么?
- 线性代数学习笔记——第十九讲——克拉默法则
- 服务器 备份 本地文件,云服务器备份本地文件
- 如何下载 Google Play 应用的apk
- SDR# (SDRSharp)代码讲解 (二)
热门文章
- 如何将matlab数据行列互换,excel中散点图如何切换行列?:excel中列怎么互换
- 自定义view画走势图(一)
- 物资调度(01背包+求方案数)
- 区块链入门-完整版V1.0-Part7
- Xen DomU 配置与使用
- html方形选项框有上下箭头,下拉框等需要显示上下箭头切换的CSS样式
- Android Handler中post方法与send方法的区别及使用
- android 自定义view仿支付宝写五褔及播放
- UE4学习之路【八】通过蓝图接口制作一个简易门
- 握紧你的流量卡,“米粉卡”已经失踪,是否预示优惠流量套餐的冬天要到来?...