class Solution {
public boolean canJump(int[] nums) {
int range=nums[0];
for(int i=0;i<=range;i++){
//从0到nums[0]之间都可作为跳跃的起始点,在这些起始点中取能跳到更远的位置为起始点,如果某一次能跳的范围超过了数组长度,那么true
range=Math.max(range,i+nums[i]);
if(range>=nums.length-1){
return true;
}
}
return false;
}
}
class Solution {
public int jump(int[] nums) {
if(nums.length==1){
return 0;
}
int start=0;
int end=nums[0];
int maxrange=0;
int step=1;
while(end<nums.length-1){
for(int i=start;i<=end;i++){
maxrange=Math.max(maxrange,i+nums[i]);
}
start=end+1;
end=maxrange;
step++;
}
return step;
}
}