// 定义一个名为Solution的类
class Solution {// 定义一个public方法jump,输入参数为一个整数数组nums,返回值类型为整数public int jump(int[] nums) {// 初始化跳跃次数结果变量为0int result = 0;// 初始化当前覆盖的最远距离下标为0int end = 0;// 初始化下一步可能达到的最远距离下标为0int temp = 0;// 使用for循环遍历数组,条件是当前位置i小于等于当前最远覆盖下标end,并且end小于数组长度减1for (int i = 0; i <= end && end < nums.length - 1; ++i) {// 计算并更新下一步可能达到的最远距离下标temp,取原temp与当前位置i加上其对应的nums[i]值两者之间的较大值temp = Math.max(temp, i + nums[i]);// 当当前位置i等于当前最远覆盖下标end时,表示已无法再向前移动,需要跳跃到新的最远位置// 将temp赋值给end,更新最远覆盖下标,并将跳跃次数result加1if (i == end) {end = temp;result++;}}// 返回跳跃次数resultreturn result;}
}
这个Java方法是用来求解“最少跳跃次数”问题的,给定一个非负整数数组,表示每个位置可以跳跃的最大长度,求从数组第一个元素到最后一个元素的最少跳跃次数。通过动态规划的方式逐步更新能够跳跃到的最远位置,并在此过程中累加跳跃次数。