本文共 764 字,大约阅读时间需要 2 分钟。
45. 跳跃游戏 II给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。你的目标是使用最少的跳跃次数到达数组的最后一个位置。假设你总是可以到达数组的最后一个位置。示例 1:输入: [2,3,1,1,4]输出: 2解释: 跳到最后一个位置的最小跳跃数是 2。 从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。示例 2:输入: [2,3,0,1,4]输出: 2提示:1 <= nums.length <= 10000 <= nums[i] <= 10
思路: 动态规划 从尾部向首部遍历 并且求出最小值
class Solution { //[2,3,1,1,4] public int jump(int[] nums) { if(nums.length==1) return 0; int[] dp=new int[nums.length]; for(int i=0;i=0;i--){ int step=nums[i]; if((i+step)>=nums.length-1) dp[i]=1; else{ while(step!=0){ dp[i]=Math.min(dp[i],dp[i+step]+1); step--; } } } return dp[0]; }}
转载地址:http://uwzcz.baihongyu.com/