思路:
举例说明:
输入: nums = [2,3,1,1,4]
以 i = 0 为起点,nums[0]=2,说明当前能到达的最远距离是i=2,在遍历到i=2的过程中计算每个点最远的距离,取最大值,当i=2,说明已经达到了之前i=0时的最大距离,而i=1和i=2可以作为下一轮新的起点,新一轮的最远距离就是在遍历i=1和i=2时得到的最大距离。
public int jump(int[] nums) {
int max=0;
int preMax=0;
int res=0;
for(int i=0;i<nums.length-1;i++){
max=Math.max(max,nums[i]+i);
if(i==preMax){
res++;
preMax=max;
}
}
return res;
}