/** * 每次跳跃产生的效益都是最高的,那么就是局部最优解 */ public int jump(int[] nums) { int step = 0; int maxFat = 0; int end = 0;//每次的右边界 for (int i = 0; i < nums.length - 1; i++) { maxFat = Math.max(maxFat, i + nums[i]);//在end范围内查找最远的距离 if (i == end) {//如果到达了最远距离,步数+1,同时更新下一次最远距离 step++; end = maxFat; } } return step; } }