【贪心算法】Leetcode 55. 跳跃游戏
- 解法1
- 解法2
---------------🎈🎈55. 跳跃游戏 题目链接🎈🎈-------------------
解法1
关键点在于:不用拘泥于每次究竟跳几步,而是看覆盖范围,覆盖范围内一定是可以跳过来的,不用管是怎么跳的。
⭐️每次移动取最大跳跃步数(得到最大的覆盖范围),每移动一个单位,就更新最大覆盖范围coverRange。
class Solution {public boolean canJump(int[] nums) {// 遍历数组,nums[i]代表当前可以覆盖到的最大范围coverRange,// 在循环中不断的修改这个coverRange// 之后在这个范围中遍历,最终看能否覆盖到最后一个下标if(nums.length == 1) return true;int coverRange = 0;for(int i = 0; i <= coverRange; i++){coverRange = Math.max(coverRange,nums[i]+i); //动态更新coverRangeif(coverRange >= nums.length-1) return true;}return false;}
}
解法2
时间复杂度O(N)
空间复杂度O(N)