55. 跳跃游戏 - Java 贪心

Smile_slime_47

原题地址:https://leetcode.cn/problems/jump-game/

题解

从左至右遍历,用maxpos维护当前能到达的最远距离,可以认为,如果nums[i]可以到达,那么nums[0]——nums[i-1]都可以到达

当遍历到i时,若maxpos>=i说明i可达,计算从i起跳能到达的最远位置:i+nums[i],并更新maxpos

遍历到最后若maxpos>=nums.length-1则说明数组尾可达

时间复杂度:O(N)

空间复杂度:O(1)

1
2
3
4
5
6
7
8
9
class Solution {
public boolean canJump(int[] nums) {
int maxpos=0;
for(int i=0;i<nums.length;i++){
if(maxpos>=i&&maxpos<i+nums[i])maxpos=i+nums[i];
}
return maxpos>=nums.length-1;
}
}
Comments
On this page
55. 跳跃游戏 - Java 贪心