Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Your goal is to reach the last index in the minimum number of jumps.
For example:
Given array A = [2,3,1,1,4]
The minimum number of jumps to reach the last index is 2. (Jump 1 step from index 0 to 1, then 3 steps to the last index.)
class Solution {
public int jump(int[] nums) {
if(nums==null || nums.length<=0) return 0;
int curr = 0;
int last = 0;
int ret = 0;
for(int i=0; i<nums.length; i++){
if(i>last){
last = curr;
ret++;
}
curr = Math.max(curr,nums[i]+i);
}
return ret;
}
}
和Jump Game一样也是采用的动态规划,只不过这里需要3个变量来记录,curr是当前可以达到的最远距离,而通过last和ret来更新步数,last表示通过上一次的更新表示last可以覆盖的范围,但last小于当前位置即i代表需要更新last且ret需要加1
具体解释可以参考博客