题目描述:
思路:
每次有个范围end,end从0开始,在遍历过程中更新范围。注意 i不能等于len-1否则会多记一次。
代码:
class Solution {
public int jump(int[] nums) {
/* int[]dp=new int[nums.length];
dp[0]=0;
for (int i = 1; i < nums.length; i++) {
int Min=Integer.MAX_VALUE;
for (int j=0;j<i;j++){
if((i-j)<=nums[j]){
Min=Math.min(Min,dp[j]);
}
}
dp[i]=Min+1;
}
return dp[nums.length-1];*/
int length = nums.length;
int end = 0;
int maxPosition = 0;
int steps = 0;
for (int i = 0; i < length - 1; i++) {
maxPosition = Math.max(maxPosition, i + nums[i]);
if(i==end){
end=maxPosition;
steps++;
}
}
return steps;
}
}