给你一个非负整数数组 nums ,你最初位于数组的第一个位置。
数组中的每个元素代表你在该位置可以跳跃的最大长度。
你的目标是使用最少的跳跃次数到达数组的最后一个位置。
假设你总是可以到达数组的最后一个位置。
示例 1:
输入: nums = [2,3,1,1,4]
输出: 2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
示例 2:
输入: nums = [2,3,0,1,4]
输出: 2
class Solution {
public int jump(int[] nums) {
//动态规划数组
int[] arr = new int[nums.length];
for (int row = 0; row < nums.length; row++) {
//当前数字
int curNum = nums[row];
//可以做几步
int step = arr[row];
//开始触发
int i = row + 1;
for (; i < nums.length && curNum > 0; i++) {
int last;
if (row == 0) {
last = 0;
} else {
last = arr[i];
}
if (last != 0) {
arr[i] = last;
} else {
arr[i] = step+1;
}
curNum--;
}
for (int k = i; k < nums.length; k++) {
int last;
if (row == 0) {
last = 0;
} else {
last = arr[k];
}
arr[k] = last;
}
}
return arr[nums.length-1];
}
}
本文介绍了一个算法问题:如何在给定数组中找到从起始位置到达末尾所需的最少跳跃次数。通过动态规划的方法,文章详细阐述了实现过程,并给出了具体的代码示例。
295

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



