Jump Game II
Solution 1
乍一看想到动态规划去了,才发现我忽略了最大步长的信息(没有的话就是DP了),因此不需要考虑跳多了的情况,而且题面能够保证绝对能到达,所以不用担心0步长的情形(跳不出去啦!)。
因此本题可以直接使用贪心算法:向后遍历,找出能够跳的最远的选择。
贪心最麻烦的地方就是全局最优解的证明,我这里给出一个简单的思路:从同一个起点出发,如果当前选择不是贪心选择的,那么下一个选择必然比贪心方案跳的更近。完成一次跳跃后有两种情形:贪心方案的第二次选择的位置是否存在于当前方案的第二次选择中。存在,则最多选择这个方案,此时当前方案会比贪心方案段(第二次选择一样,但是第一次选择短了);不存在,那么肯定是会短的(两次选择都短)。
- 时间复杂度: O ( N 2 ) O(N^2) O(N2),其中 N N N为输入序列长度
- 空间复杂度: O (