文章目录

  • 贪心算法核心思想
  • 基本步骤
  • 455.分发饼干(Java)
    • 1.需要考虑的问题
    • 2.方案(序号分别与问题对应)

贪心算法核心思想

贪心算法的基本思想是每一步都做出当时看起来最佳的选择,可以理解为,贪心算法在求解过程中的每一步都选择一个局部最优的策略,把整个问题的规模压缩,,最后把每一步的结果合并起来形成最终的节,希望通过局部最优解得到全局的最优解。

基本步骤

(1)从一个初始解开始;
(2)采用迭代的过程,当可以向目标前进一步时,就根据局部最优的策略,得到一个部分解,将问题规模缩小;
(3)将所有的解综合起来。

455.分发饼干(Java)

接下来通过求解力扣上分发饼干这道题,加深对贪心的理解。

1.需要考虑的问题

  1. 核心问题为尽可能满足越多数量的孩子寻找局部最优解(求解重点);
  2. 如何将饼干的大小和孩子的胃口进行比较;

2.方案(序号分别与问题对应)

结合贪心的思想:将大问题分解为每个小问题,为每个小问题做出最优的解,再将所有解结合就是整个问题的解。

  1. 根据贪心的思想,先将整个问题拆分成为每个孩子分饼干,同时需要分配的孩子尽可能多,那么就需要合理利用资源(不能浪费饼干),采取的策略是大胃口对大饼干,小胃口对小饼干(反例:如果小胃口对应大饼干,虽然能够满足小胃口,但是小饼干却不能满足大胃口的孩子)。
  2. 为了方便比较(大对大,小对小),将两个数组事先排序即可,全都从头遍历,或者全都从尾开始遍历。
  3. 具体实现(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)-贪心算法思想及基本步骤相关推荐

  1. 通俗易懂:贪心算法(一):分配问题 (力扣455分发饼干 和135分发糖果)

    看完本文,可以顺便解决leetcode以下两个题目: 455.分发饼干(简单) 135.分发糖果(困难) 一.通俗易懂的 贪心算法 |思想 贪心算法就是采用贪心的策略,保证每一次的操作都是局部最优的, ...

  2. leetcode 455. 分发饼干(贪心算法)

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干. 对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j,都有一个尺寸 ...

  3. 力扣455. 分发饼干(JavaScript)

    //从后往前遍历,先找到能满足的最大胃口的小孩 var findContentChildren = function(g, s) {g.sort((a,b)=>a-b)s.sort((a,b)= ...

  4. LeetCode 455. 分发饼干(贪心)

    1. 题目 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j , ...

  5. leetcode455. 分发饼干(贪心算法)

    假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 j ,都有一个尺寸 ...

  6. 力扣贪心算法专题(一)455.分发饼干 376. 摆动序列 53. 最大子序和 122.买卖股票的最佳时机II 1005.K次取反后最大化的数组和 思路及C++实现 贪心算法 动态规划

    文章目录 贪心算法 455.分发饼干 思路 步骤 代码 376. 摆动序列 贪心算法 思路 分析 代码 动态规划 思路 步骤 代码 53. 最大子序和 暴力解法 双层for循环 贪心算法 思路 分析 ...

  7. 力扣:455. 分发饼干

    题目链接: 力扣:455. 分发饼干 class Solution {//贪心算法 public:int findContentChildren(vector<int>& g, v ...

  8. 贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和

    贪心1|455.分发饼干|376. 摆动序列|53. 最大子序和 一.455.分发饼干 题目连接:455. 分发饼干 - 力扣(LeetCode) 思路1:用贪心思想,将饼干数组和胃口数组先排序,然后 ...

  9. Java实现 LeetCode 455 分发饼干

    455. 分发饼干 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个胃口值 gi ,这是能让孩子们满足胃口的饼干的最小尺寸:并且每块饼干 ...

最新文章

  1. 不知道这 7 大 OpenCV 函数怎么向计算机视觉专家进阶?
  2. 数据结构-String、char
  3. OSU!(bzoj 4318)
  4. python模块之re正则表达式
  5. Java集合---HashSet的源码分析
  6. Python 动态获取对象的属性和方法(内含inspect)
  7. Zeusee 开源移动端车型识别系统HyperVID
  8. var和function谁先优先执行_浅谈JavaScript 的执行顺序
  9. oracle中导入,ORACLE数据导入
  10. VScode设置console.log('')快捷键
  11. 电脑关机很慢是怎么回事
  12. FPGA与CPLD的区别
  13. Bigemap中添加离线地图数据包 教程
  14. 机器视觉是什么,未来前景怎么样?
  15. php写超级简单的登陆注册页面(适用期末作业至少要求带有数据库的)
  16. 全民热议“10万彩礼结不了婚”的背后,百合网做了什么?
  17. 线性代数学习笔记——第十九讲——克拉默法则
  18. 服务器 备份 本地文件,云服务器备份本地文件
  19. 如何下载 Google Play 应用的apk
  20. SDR# (SDRSharp)代码讲解 (二)

热门文章

  1. 如何将matlab数据行列互换,excel中散点图如何切换行列?:excel中列怎么互换
  2. 自定义view画走势图(一)
  3. 物资调度(01背包+求方案数)
  4. 区块链入门-完整版V1.0-Part7
  5. Xen DomU 配置与使用
  6. html方形选项框有上下箭头,下拉框等需要显示上下箭头切换的CSS样式
  7. Android Handler中post方法与send方法的区别及使用
  8. android 自定义view仿支付宝写五褔及播放
  9. UE4学习之路【八】通过蓝图接口制作一个简易门
  10. 握紧你的流量卡,“米粉卡”已经失踪,是否预示优惠流量套餐的冬天要到来?...