IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> GreedyStrategy 贪心策略 -> 正文阅读

[数据结构与算法]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)

总结:

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

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

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

参考链接:

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-08-19 19:31:09  更:2022-08-19 19:32:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 20:23:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码