【每日刷题】跳跃游戏
55. 跳跃游戏 - 力扣(LeetCode)
贪心,计算能跳到的最远距离,更新dis。
我的AC代码,如果跳不动了就返回false,能跳完就返回true。
class Solution {public boolean canJump(int[] nums) {int len = nums.length;int dis = 0;for(int i = 0; i < len; i++) {if(i > dis) {return false;}dis = Math.max(dis, i + nums[i]);}return true;}
}
官方题解,其实跟我的代码思路基本一样,只是判断条件和返回条件互换了。同样用dis作为最远可达距离,如果 dis >= len-1 ,说明找到了可以到达最后一个下标的地方,返回true,如果遍历结束,最后一个位置仍然不可达,说明无法到达,返回false。
class Solution {public boolean canJump(int[] nums) {int len = nums.length;int dis = 0;for(int i = 0; i < len; i++) {if(i <= dis) {dis = Math.max(dis, i + nums[i]);if(dis >= len - 1) {return true;}}}return false;}
}