😄 跟着Carl哥(公众号:代码随想录)学学贪心算法咯~ 。贪心的本质是选择每一阶段的局部最优,从而达到全局最优。举一个例子:
- 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿?指定每次拿最大的,最终结果就是拿走最大数额的钱。每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。
- 再举一个例子如果是 有一堆盒子,你有一个背包体积为n,如何把背包尽可能装满,如果还每次选最大的盒子,就不行了。这时候就需要动态规划。动态规划的问题在下一个系列会详细讲解。
⭐ 贪心算法并没有什么固定的套路。纯靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划了。
⭐ 那如何验证可不可以用贪心算法呢?最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。Carl哥说面试一般不会叫证明(数学归纳法 or 反证法)贪心算法的合理性,代码写出来跑过测试用例即可,或者自己能自圆其说理由就行了。
⭐ 贪心有时候就是常识性的推导,所以会认为本应该就这么做!
⭐ 做题的时候,只要想清楚 局部最优