LeetCoded贪心算法系列——455

1.本题是一个经典的贪心算法,怎么辨别题解需要使用贪心算法呢?

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。

这么说有点抽象,来举一个例子:

例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?

指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。

再举一个例子如果是 有一堆盒子,你有一个背包体积为n,如何把背包尽可能装满,如果还每次选最大的盒子,就不行了。这时候就需要动态规划。动态规划在我主页也有专栏,大家可以看看。

2.贪心算法的套路

贪心算法没有固定套路,唯一难点就是如何局部最优推出全局最优

一般情况下可以分为如下四步:

  • 将问题分解为若干个子问题

  • 找出适合的贪心策略

  • 求解每一个子问题的最优解

  • 将局部最优解堆叠成全局最优解

但是真正做题的时候很难分出这么详细的解题步骤,可能就是因为贪心的题目往往还和其他方面的知识混在一起

3.具体分析和代码

为了满足更多的小孩,就不要造成饼干尺寸的浪费。大尺寸的饼干既可以满足胃口大的孩子也可以满足胃口小的孩子,那么就应该优先满足胃口大的。这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。可以尝试使用贪心策略,先将饼干数组和小孩数组排序。然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计满足小孩数量。

当然也可以换一个思路,小饼干先喂饱小胃口

Java代码:


class Solution {

    //优先考虑胃口,先喂饱大胃口

    public int findContentChildren(int[] g, int[] s) {

        Arrays.sort(g);

        Arrays.sort(s);

        int count = 0;

        int start = s.length - 1;

        // 遍历胃口

        for (int index = g.length - 1; index >= 0; index--) {

            if(start >= 0 && g[index] <= s[start]) {



# 最后总结我的面试经验

2021年的金三银四一眨眼就到了,对于很多人来说是跳槽的好机会,大厂面试远没有我们想的那么困难,摆好心态,做好准备,你也可以的。

另外,面试中遇到不会的问题不妨尝试讲讲自己的思路,因为有些问题不是考察我们的编程能力,而是逻辑思维表达能力;最后平时要进行自我分析与评价,做好职业规划,不断摸索,提高自己的编程能力和抽象思维能力。

![](https://img-blog.csdnimg.cn/img_convert/e02a3400f9f3828028df20a4c50523ad.webp?x-oss-process=image/format,png)

BAT面试经验

**实战系列:Spring全家桶+Redis等**

![](https://img-blog.csdnimg.cn/img_convert/edf8c45cfd5f3b386d4b719ee82e9516.webp?x-oss-process=image/format,png)

**其他相关的电子书:源码+调优**

![](https://img-blog.csdnimg.cn/img_convert/1b2aa5c4fbefc2099ab491f14c3bc8ef.webp?x-oss-process=image/format,png)

**面试真题:**

![](https://img-blog.csdnimg.cn/img_convert/12cf28e41514ad4c8ce017b706fb8c30.webp?x-oss-process=image/format,png)

![](https://img-blog.csdnimg.cn/img_convert/61e34c34a39fcc374c2c49e5f71c7406.webp?x-oss-process=image/format,png)



3944715)]

**面试真题:**

[外链图片转存中...(img-t0qZLVlU-1714413944715)]

[外链图片转存中...(img-pz8QfT14-1714413944716)]



> **本文已被[CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】](https://bbs.csdn.net/topics/618154847)收录**
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值