leetcode 45 跳跃游戏II
程序员文章站
2022-07-07 15:47:13
...
如果要考虑所有情况在得到结果显然耗费太多时间,既然要最少跳跃次数,即每一跳的可达范围要最大,例如2,3,1,1,4.第一跳可达3,1两个位置,所以在一步之内可达3,1;然后选出3,1,两个位置 那个可以到达更远的距离,得到第二步可达的范围,依次类推知道可达范围包含终点。
class Solution {
public int jump(int[] nums) {
if(nums.length == 1) return 0;
int reach = 0;
int nextreach = nums[0];
int step = 0;
for(int i = 0;i<nums.length;i++){
nextreach = Math.max(i+nums[i],nextreach);
if(nextreach >= nums.length-1) return (step+1);
if(i == reach){
step++;
reach = nextreach;
}
}
return step;
}
}
上一篇: 美图秀秀制作证件照简单几步便可搞定