动态规划:
1.声明一个dp数组来表示到下标i时要跳转的最小次数,同时要个每个dp数组的值赋值为最大。之后初始化dp【0】=0,用for循环来进行遍历下标i和遍历下标i之前的值,判断条件为如果i之前的某个下标跳转的距离>=i时要根新dp【i】的值 ,递推公式为dp【i】=math,min(dp[i],dp[j]+1)。表示在这个跳转范围里dp【i】的值为dp【j】加一。
class Solution {public int jump(int[] nums) {//表示的是跳转到下标为i时要跳转的最小次数int [] dp=new int [nums.length];//给每个dp数组的值赋值为数组的最大长度for(int i=1;i<nums.length;i++){dp[i]=nums.length;}//初始化dp【0】时跳转次数为0dp[0]=0;//来遍历下标ifor(int i=1;i<nums.length;i++){//遍历下标i之前的值for(int j=0;j<i;j++){//判断跳转的最远距离只要在这个距离中dp【i】的值就为dp【j】加一if(j+nums[j]>=i){dp[i]=Math.min(dp[i],dp[j]+1);}}}return dp[nums.length-1];}
}