题目(15¥)
题目地址:https://leetcode-cn.com/problems/jump-game-ii/
题解
一遍遍历,更新能到达的最远下标,当遍历到那个下标的时候跳跃次数+1。
注意:
源码中,令 i = end 的时候 ans++,其实在 i = end = 0 的时候多加了一次,因为 0 这个位置是初始位置,不需要跳跃,所以我们只遍历到 nums.length - 1 的位置,一加一减,正好抵消,代码上比较美观。
源码
class Solution {
public int jump(int[] nums) {
int ans = 0;
int end = 0;
int maxIndex = 0;
for (int i = 0; i < nums.length - 1; i++) {
maxIndex = Math.max(nums[i] + i, maxIndex);
if (i == end) {
end = maxIndex;
ans++;
}
}
return ans;
}
}