主题思想: 这个和Jump GameII 是类似的题
做题思路就是贪心算法, 首先获取最大可以走到的下标,然后依次走一步,记录在走到上一次计算到的最大下标位置时出现的最大值,当走到上一次计算的最大下标时,更新下一步可以到达的最大下标,如果下一步可以到达的下标大于数组最后一个元素下标,则可以到达。如果等于当前下标,说明止步不前,则无法到达数组最后一个元素。
AC代码:
class Solution {
public boolean canJump(int[] nums) {
if(nums==null||nums.length<2)return true;
int longest=0,nextlongest=0;
for(int i=0;i<nums.length;i++){
nextlongest=Math.max(nextlongest,i+nums[i]);
if(i==longest){
longest=nextlongest;
if(longest>=nums.length-1) return true;
if(longest==i) return false;
}
}
return true;
}
}