class Solution {
public int jump(int[] nums) {
int res = 0;
int curEnd = 0;
int nextEnd = 0;
// 由于到达的位置是 n - 1,那么在 n - 2 的位置上有可能进行最后一次操作
for(int i = 0; i < nums.length - 1; i++) {
// 在每个位置上更新能够到达的最远边界
nextEnd = Math.max(nextEnd, i + nums[i]);
// 如果当前已经不能继续往前走,那么在这个位置上造桥
if(i == curEnd) {
curEnd = nextEnd;
res++;
}
}
return res;
}
}