hot100:贪心算法--45. 跳跃游戏 II
·

📝 思路(贪心)
核心:每次在能跳到的范围里,选择能到达最远的点。
过程:
遍历数组,用
end表示当前这一步能到达的最远位置。用
farthest表示下一步能到达的最远位置。当走到
end时,说明必须要跳了(否则走不下去),跳一次并更新end = farthest。最后统计跳跃次数。
class Solution {
public int jump(int[] nums) {
int steps = 0;// 跳跃次数
int end = 0;// 当前这一步能到的最远位置
int farthest = 0;// 下一步能到的最远位置
// 注意:最后一个位置不用遍历,因为跳到最后就结束了
for(int i = 0; i < nums.length - 1; i++){
farthest = Math.max(farthest, i + nums[i]);// 能跳到的最远位置
if(i == end){// 到达了当前这一步的边界,必须跳一次
steps++;
end = farthest;// 更新边界
}
}
return steps;
}
}
// 时间复杂度:O(n)(只需一次遍历)
// 空间复杂度:O(1)(只用几个变量)
更多推荐


所有评论(0)