最近几个Leetcode题目选的都是贪心。
1. 首先建模,看看能不能得到一个递进模型,使得这个模型的任何一步如果最优,持续计算下去不需回退即能得到全局最优解,那么这个题目就可以用贪心算法。
2. 算法实际上很简单,即是每一步都尽量去得到最优的结果,于是很快就能得到最终解。
题目和解法归纳:
1. Jump Game
对于任何一步都可以走0-A[i]步,所以每一步都可以走到最远而无需考虑回退。标准的贪心算法问题且可以做到O(n)的效率。
2. Jump Game II
类似上题,在跨出当前一步之前,只需要看看跨到什么位置能让下一步和这一步的总和最远即可最优化结果。仍然不需要回退,而且下一步的选择只需要和当前一步有关即可,无需考虑之前的其他步。
类似上题,在跨出当前一步之前,只需要看看跨到什么位置能让下一步和这一步的总和最远即可最优化结果。仍然不需要回退,而且下一步的选择只需要和当前一步有关即可,无需考虑之前的其他步。
3. Container with most water
桶里能装多少水取决于矮的那个边。为了装更多的水,要么桶足够宽,要么两个边足够高。所以从两边开始计算当前的桶能装多少水。计算结束后矮的一边向中间靠拢一步,继续计算。
桶里能装多少水取决于矮的那个边。为了装更多的水,要么桶足够宽,要么两个边足够高。所以从两边开始计算当前的桶能装多少水。计算结束后矮的一边向中间靠拢一步,继续计算。