常用算法 — 贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

什么题目适合用贪心? #

只要可以通过局部最优达到全局最优解,就可以使用贪心算法,然而只有一部分问题拥有这个性质,故只能在特定的问题下使用贪心算法。

与动态规划的区别 #

贪心算法可以认为是动态规划算法的一个特例,相比动态规划,使用贪心算法需要满足更多的条件(贪心选择性质),但是效率比动态规划要高。

比如说一个算法问题使用暴力解法需要指数级时间,如果能使用动态规划消除重叠子问题,就可以降到多项式级别的时间,如果满足贪心选择性质,那么可以进一步降低时间复杂度,达到线性级别。

常见题型 #

区间调度 #

最大不相交子集。

无重叠区间open in new window

跳跃游戏 #

字符串 #

剑指 Offer II 019. 最多删除一个字符得到回文

本文共 440 字,上次修改于 Oct 6, 2023
相关标签: 算法