参考
⏰ 时间复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)
class Solution {
public int jump(int[] nums)
{
int steps = 0;
int n = nums.length;
int end = 0; // 上次跳跃可达范围右边界(下次的最右起跳点)
int maxPos = 0;// 目前能跳到的最远位置
for (int i = 0; i < n - 1; i++)
{
maxPos = Math.max(maxPos, nums[i] + i);// 这里贪的是 (nums[i]+i)
// 到达上次跳跃能到达的右边界了
if (i == end)
{
end = maxPos; // 目前能跳到的最远位置变成了下次起跳位置的有边界
steps++;// 进入下一次跳跃
}
}
return steps;
}
}