- 贪心算法:找能跳的最远的
- 使用 curMax 记录目前能够跳到的最高位置
- 使用 end 记录这次跳跃的边界,到达边界就跳跃次数 + 1
class Solution {
public int jump(int[] nums) {
int jumps = 0;
int end = 0;
int curMax = 0;
// 因为是起跳的时候就 + 1 了,如果最后一次跳跃刚好到达了最后一个位置,那么遍历到最后一个位置的时候就会再次起跳,这是不允许的,因此不能遍历最后一个位置
for (int i = 0; i < nums.length - 1; i++) {
curMax = Math.max(curMax, i + nums[i]);
//第一次起跳 或 到达跳跃的边界
if (i == end) {
jumps++;
end = curMax;
}
}
return jumps;
}
}