方法:
首先建立一个一维数组nums, nums[i] 表是在当前位置上还能向右跑几步;
然后更新最右距离:
// nums 最优距离数组 // t 要跳的位置 public int jump(int[] nums, int t) { int n = nums.length; if(n==1){ return 0; } int mr = 0; // 能跳的最右边的位置 int ans = 0; // 跳的次数 int end = 0; // 上一次跳的最右边位置 for (int i = 0; i < n; i++) { if(i>mr) { return -1; } mr = Math.max(mr, nums[i]+i); if(mr>t){ return ans+1; } if(end == i){ end = mr; ans++; } } return ans; }
标签:return,nums,int,ans,最少,mr,区间,end,模板 From: https://www.cnblogs.com/r1-12king/p/17161402.html