描述
给出一个非负整数数组,你最初定位在数组的第一个位置。数组中的每个元素代表你在那个位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。
样例
给出数组A = [2,3,1,1,4],最少到达数组最后一个位置的跳跃次数是2(从数组下标0跳一步到数组下标1,然后跳3步到数组的最后一个位置,一共跳跃2次)
动态规划实现:
public class Solution {
public int jump(int[] A) {
int[] steps=new int[A.length];
for(int i=1; i<A.length; i++){
steps[i]=0x7fffffff;
}
for(int i=0; i<A.length; i++){
for(int j=i; j<=i+A[i] && j<A.length; j++){
steps[j]=Math.min(steps[j], steps[i]+1);
}
}
return steps[A.length-1];
}
}