45. 跳跃游戏 II(Java)
2024-01-08 01:53:50
题目描述:
给定一个长度为 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]。
输入:
nums = [2,3,1,1,4]
输出:
2
解释: 跳到最后一个位置的最小跳跃数是 2。
从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。
代码实现:
public class Main{
public static void main(String[] args) {
int[] nums = new int[]{4, 1, 1, 3, 1, 1, 1};
System.out.println(jump(nums));//2
}
public static int jump(int[] nums) {
//跳跃次数
int cnt = 0;
//每一次跳跃的起点
int start = 0;
//每一次跳跃的终点
int end = 0;
//计算每一轮的最大跳跃数
int max = 0;
while (end < nums.length - 1) {
for (int i = start; i <= end; i++) {
//计算本轮区间数据中的最大数据长度
max = Math.max(max, nums[i] + i);
}
start = end;//上一轮的终点变起点
end = max;//这一轮终点为:上一轮起点到终点中能到达的最大跳跃长度
cnt++;
}
return cnt;
}
}
文章来源:https://blog.csdn.net/qq_61888137/article/details/135417151
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!