力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
给定一个长度为
n的 0 索引整数数组nums。初始位置为nums[0]。每个元素
nums[i]表示从索引i向前跳转的最大长度。换句话说,如果你在nums[i]处,你可以跳转到任意nums[i + j]处:
0 <= j <= nums[i]i + j < n返回到达
nums[n - 1]的最小跳跃次数。生成的测试用例可以到达nums[n - 1]。
题解:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
代码如下:
class Solution {
public int jump(int[] nums) {
int length = nums.length;
int end = 0;
int maxPosition = 0;
int steps = 0;
for (int i = 0; i < length - 1; i++) {
maxPosition = Math.max(maxPosition, i + nums[i]);
if (i == end) {
end = maxPosition;
steps++;
}
}
return steps;
}
}

文章讲解了如何通过动态规划方法解决LeetCode中的问题,计算从数组起点跳跃到达终点所需的最小步数。关键在于找到每个位置的最大可达位置。
1087

被折叠的 条评论
为什么被折叠?



