// 定义一个名为Solution的类
class Solution {
// 定义一个public方法jump,输入参数为一个整数数组nums,返回值类型为整数
public int jump(int[] nums) {
// 初始化跳跃次数结果变量为0
int result = 0;
// 初始化当前覆盖的最远距离下标为0
int end = 0;
// 初始化下一步可能达到的最远距离下标为0
int temp = 0;
// 使用for循环遍历数组,条件是当前位置i小于等于当前最远覆盖下标end,并且end小于数组长度减1
for (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加1
if (i == end) {
end = temp;
result++;
}
}
// 返回跳跃次数result
return result;
}
}
这个Java方法是用来求解“最少跳跃次数”问题的,给定一个非负整数数组,表示每个位置可以跳跃的最大长度,求从数组第一个元素到最后一个元素的最少跳跃次数。通过动态规划的方式逐步更新能够跳跃到的最远位置,并在此过程中累加跳跃次数。