法1:贪心
Python
最佳方案
# 低保写法
class Solution:
def canJump(self, nums: List[int]) -> bool:
n = len(nums)
maxIndex = 0
for i, val in enumerate(nums):
if i <= maxIndex and i + val >= maxIndex:
maxIndex = i + val
if maxIndex >= n - 1:
return True
return False
# 优化写法
class Solution:
def canJump(self, nums: List[int]) -> bool:
max_index = 0
for index, val in enumerate(nums):
if max_index >= index and index+val > max_index:
max_index = index+val
return max_index >= len(nums) - 1
Java
该方法次次之!!!
class Solution {
public boolean canJump(int[] nums) {
int maxIndex = nums.length - 1;
int curMaxIndex = 0;
for (int i = 0; i < nums.length; ++i) {
if (i <= curMaxIndex) {
curMaxIndex = Math.max(i + nums[i], curMaxIndex);
if (curMaxIndex >= maxIndex) {
return true;
}
}
}
return false;
}
}