码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • GreedyStrategy 贪心策略


    原理:

    什么是贪心

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

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

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

    指定每次拿最大的,最终结果就是拿走最大数额的钱。

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

    贪心的套路(什么时候用贪心)

    说实话贪心算法并没有固定的套路。

    所以唯一的难点就是如何通过局部最优,推出整体最优。

    那么如何能看出局部最优是否能推出整体最优呢?有没有什么固定策略或者套路呢?

    靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。

    有同学问了如何验证可不可以用贪心算法呢?

    最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。

    模板:

    贪心算法一般分为如下四步:

    • 将问题分解为若干个子问题
    • 找出适合的贪心策略
    • 求解每一个子问题的最优解
    • 将局部最优解堆叠成全局最优解

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

    题目实战:

    ① 简单题:

    贪心,正向思路,反向思路——2022年8月13日15:32:40 - 分发饼干 - 力扣(LeetCode)

    贪心——2022年8月13日16:41:37 - 最大子数组和 - 力扣(LeetCode)

    贪心——2022年8月14日19:44:21 - 柠檬水找零 - 力扣(LeetCode)

    ② 中等题:

    1)序列问题:

    贪心——2022年8月13日16:16:55 - 摆动序列 - 力扣(LeetCode)

    贪心,递归——2022年8月15日20:50:36 - 单调递增的数字 - 力扣(LeetCode)

    2)股票问题:

    贪心——2022年8月13日17:10:58 - 买卖股票的最佳时机 II - 力扣(LeetCode)

    贪心,递归——2022年8月15日20:50:36 - 单调递增的数字 - 力扣(LeetCode)

    3)两个维度权衡问题:

    遇到两个维度权衡的时候,一定要先确定一个维度,再确定另一个维度。

    如果两个维度一起考虑一定会顾此失彼。

    两次贪心——2022年8月14日19:26:41 - 分发糖果 - 力扣(LeetCode)

    二维贪心——2022年8月14日21:35:49 - 根据身高重建队列 - 力扣(LeetCode)

    ③ 难题:

    1)区间问题:

    贪心——2022年8月13日17:26:53 - 跳跃游戏 - 力扣(LeetCode)

    贪心——2022年8月13日18:03:07 - 跳跃游戏 II - 力扣(LeetCode)

    贪心——2022年8月13日21:17:45 - K 次取反后最大化的数组和 - 力扣(LeetCode)

    贪心——2022年8月15日00:50:37 - 用最少数量的箭引爆气球 - 力扣(LeetCode)

    无重叠区间:如果两个区间有重叠,应该保留结尾小的,结合图示很容易想到。

    贪心,区间贪心——2022年8月15日13:34:39 - 无重叠区间 - 力扣(LeetCode)

    贪心,脑筋急转弯,哈希——2022年8月15日18:09:05 - 划分字母区间 - 力扣(LeetCode)

    贪心,二维排序,区间问题——2022年8月15日18:25:28 - 合并区间 - 力扣(LeetCode)

    2)其他:

    贪心——2022年8月14日16:42:41 - 加油站 - 力扣(LeetCode)

    贪心,后序遍历,递归——2022年8月15日21:53:07 - 监控二叉树 - 力扣(LeetCode)

    总结:

    贪心没有套路,说白了就是常识性推导加上举反例。

    最好用的策略就是举反例,如果发现是想不到反例,那这时候就可以试一试贪心吧。

    虽然贪心是常识,有些常识并不容易,甚至很难!

    参考链接:

    • 代码随想录
    • 贪心算法巨简单?没套路?每次做题都不知道自己用了贪心?遇到简单的贪心题目靠直觉,难一点就不会了?来来来,贪心算法你该了解这些!_哔哩哔哩_bilibili
  • 相关阅读:
    Nacos注册中心
    CN考研真题知识点二轮归纳(4)
    基于PyTorch的交通标志目标检测系统
    pytest学习笔记
    【考研英语语法】状语从句精讲
    替换Jar包中文件,重打Jar包
    Flutter 又 7 个最佳实践
    读写分离和主从复制
    6、Netty ByteBuf工作原理
    Java 对象序列化
  • 原文地址:https://blog.csdn.net/qq_51705526/article/details/126355693
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号