一、正序
每次找能到达的最远端,然后保存最远端的位置。
注意 其实各个位置之间并不干扰,此位置能到达哪里只决定于此位置的i和nums[i]
所以,我们需要遍历所有的i,因为我们需要找到每一步的最大值。
所以外循环就固定下来了。然后我们需要在每一步之内算出最大值,所以就需要一个max来存储,每次都更新max,直至i==end的时候,保存max为end。
Java:
class Solution {
public int jump(int[] nums) {
int end = 0, maxPosition = 0,steps = 0;
for (int i = 0; i < nums.length - 1; i++) {
maxPosition = Math.max(maxPosition, i + nums[i]);
if (i == end) {//当到达这一部分的末尾位置时,更新end,步数+1
end = maxPosition;
steps++;
}
}