55. Jump Game
# Medium
Last updated
# Medium
Last updated
class Solution:
def canJump(self, nums: List[int]) -> bool:
l = len(nums)
end = l-1 # last True index in nums
start = l-2 # index of start in nums, from start to end to see if possible
flag = True # current status, List[l-1] -> List[l-1]
while start >= 0:
if nums[start] >= end - start: # 需要的步数是否能够到达end
end = start
flag = True
else:
flag = False
start = start-1
return flagclass Solution {
public boolean canJump(int[] nums) {
boolean[] canReach = new boolean[nums.length];
Arrays.fill(canReach, false);
canReach[0] = true;
for(int i = 0; i < nums.length; i ++) {
if(!canReach[i])
continue;
for(int x = 1; x <= nums[i] && i+x < nums.length; x ++) {
canReach[i+x] = true;
if(i+x == nums.length - 1)
return true;
}
}
return canReach[nums.length - 1];
}
}class Solution {
public boolean canJump(int[] nums) {
int lastPosi = nums.length - 1;
for(int i = nums.length - 1; i >= 0; i --) {
if(i + nums[i] >= lastPosi)
lastPosi = i;
}
return lastPosi == 0;
}
}