代码随想录 | 贪心算法总结
贪心理论基础
在贪心系列开篇词贪心算法理论基础中,我们就讲解了大家对贪心的普遍疑惑。
- 贪心很简单,就是常识?
贪心思路往往很巧妙,并不简单。
- 贪心有没有固定的套路?
贪心无套路,也没有框架之类的,需要多看多练培养感觉才能想到贪心的思路。
贪心简单题
以下三道题目就是简单题,大家会发现贪心感觉就是常识。是的,如下三道题目,就是靠常识,但我都具体分析了局部最优是什么,全局最优是什么,贪心也要贪的有理有据!
- 分发饼干
- K次取反后最大化的数组和
- 柠檬水找零
贪心中等题
贪心中等题,靠常识可能就有点想不出来了。开始初现贪心算法的难度与巧妙之处。
- 摆动序列
- 单调递增的数字
贪心解决股票问题
大家都知道股票系列问题是动规的专长,其实用贪心也可以解决,而且还不止就这两道题目,但这两道比较典型,我就拿来单独说一说
- 买卖股票的最佳时机Ⅱ
两个维度权衡问题
在出现两个维度相互影响的情况时,两边一起考虑一定会顾此失彼,要先确定一个维度,再确定另一个一个维度。
- 分发糖果
- 根据身高重建队伍
贪心难题
这里的题目如果没有接触过,其实是很难想到的,甚至接触过,也一时想不出来,所以题目不要做一遍,要多练!
贪心解决区间问题
关于区间问题,大家应该印象深刻,有一周我们专门讲解的区间问题,各种覆盖各种去重。
- 跳跃游戏
- 跳跃游戏Ⅱ
- 用最少数量的箭引爆气球
- 无重叠区间
- 划分字母区间
- 合并区间
其他难题
最大子序和其实是动态规划的题目,但贪心性能更优,很多同学也是第一次发现贪心能比动规更优的题目。
加油站可能以为是一道模拟题,但就算模拟其实也不简单,需要把while用的很娴熟。但其实是可以使用贪心给时间复杂度降低一个数量级。
最后贪心系列压轴题目监控二叉树,不仅贪心的思路不好想,而且需要对二叉树的操作特别娴熟,这就是典型的交叉类难题了。
总结
这个图是 代码随想录知识星球 (opens new window)成员:海螺人 (opens new window)所画,总结的非常好,分享给大家。