class Solution {
public int jump(int[] nums) {
int position = nums.length - 1; // 当前需要到达的目标位置,初始为终点
int steps = 0; // 记录跳跃次数
// 当目标位置还没退回到起点 0 时,继续反向查找
while (position > 0) {
// 从左向右遍历,寻找能到达当前 position 的最左侧(最早)位置
for (int i = 0; i < position; i++) {
if (i + nums[i] >= position) {
position = i; // 更新目标位置为这个起跳点
steps++; // 跳跃次数 +1
break; // 已经找到了最左侧的,跳出 for 循环,开始新一轮的 while 寻找
}
}
}
return steps;
}
}