链接直达
class Solution {
public boolean canJump(int[] nums) {
if(nums.length == 1) return true;
int distance = 0;
for(int i = 0; i <= distance; i++){
distance = Math.max(distance, i + nums[i]);
if(distance >= nums.length - 1){
return true;
}
}
return false;
}
}
链接直达
class Solution {
public int jump(int[] nums) {
if(nums.length == 0 || nums.length == 1 || nums == null){
return 0;
}
int count = 0;//走的步数
int curdistance = 0;//当前跳跃范围
int maxdistance = 0;//最大跳跃范围
for(int i = 0; i < nums.length; i++){
//更新最大跳跃范围
maxdistance = Math.max(maxdistance, i + nums[i]);
if(maxdistance >= nums.length - 1){
//此时表示加上当前的num[i]可以跳到末尾乐,需要count++,更新count
count++;
break;
}
if(i == curdistance){
//表示即将超出当前的跳跃范围,那么就count++,扩大范围
count++;
curdistance = maxdistance;
}
}
return count;
}
}