华为OD机试真题(Java),跳跃游戏 II(100%通过+复盘思路)

news/2025/1/12 0:53:56/

在这里插入图片描述

一、题目描述

给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。

每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处:

  • 0 <= j <= nums[i]
  • 0i + j <

返回到达 nums[n - 1] 的最小跳跃次数。生成的测试用例可以到达 nums[n - 1]。

二、输入描述

2,3,1,1,4

三、输出描述

2

四、解题思路

跳到最后一个位置的最小跳跃数是 2。

从下标为 0 跳到下标为 1 的位置,跳 1 步,然后跳 3 步到达数组的最后一个位置。

五、Java算法源码

  1. 创建一个数组 dp,其中 dp[i] 表示到达索引 i 的最小跳跃次数;
  2. 初始化 dp 数组,将所有元素初始化为一个较大的数,除了 dp[0],它被初始化为 0,表示初始位置不需要跳跃;
  3. 遍历数组,从索引 1 开始,更新每个位置的最小跳跃次数;
  4. 对于索引 i,遍历索引范围 j,其中 j < i。如果从索引 j 可以跳跃到索引 i(即 j + nums[j] >= i),则更新 dp[i] 为 dp[j] + 1;
  5. 返回 dp 数组的最后一个元素 dp[n-1],即到达最后一个位置的最小跳跃次数。
public static void main(String[] args) {Scanner sc = new Scanner(System.in);int[] nums = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();int minJumps = jump(nums);System.out.println(minJumps);
}public static int jump(int[] nums) {int n = nums.length;// 创建一个数组 dp,其中 dp[i] 表示到达索引 i 的最小跳跃次数。int[] dp = new int[n];dp[0] = 0;for (int i = 1; i < n; i++) {// 初始化 dp 数组,将所有元素初始化为一个较大的数,除了 dp[0],它被初始化为 0,表示初始位置不需要跳跃。dp[i] = Integer.MAX_VALUE;for (int j = 0; j < i; j++) {if (j + nums[j] >= i) {dp[i] = Math.min(dp[i], dp[j] + 1);}}}return dp[n - 1];
}

五、效果展示

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【投篮大赛】【2023Q1 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/87373.html

相关文章

jsp基于 JavaWeb+springboot 的校园快递驿站管理系统

不同的系统提供的服务也不相同&#xff0c;其对应的功能也不相同&#xff0c;所以&#xff0c;系统开工前&#xff0c;需要明确其用途&#xff0c;确定其功能。由此&#xff0c;才可以进行各个任务的开展。 校园驿站管理系统经过分析&#xff0c;确定了其需要设置管理员的角色&…

【NeRF】(一)NeRF论文学习笔记

文章目录 NeRF学习笔记1 实现过程1.1 相机参数&#xff1a;如何通过不同角度的照片得出输入数据1.2 MLP1.3 体积渲染及离散化1.4 优化点 NeRF学习笔记 概述&#xff1a; 重建&#xff1a;根据目前有的不同角度二维图片&#xff0c;重建三维物体。 用 MLP 网络学 Scene Represe…

1090 Highest Price in Supply Chain(29行代码+超详细注释)

分数 25 全屏浏览题目 作者 CHEN, Yue 单位 浙江大学 A supply chain is a network of retailers&#xff08;零售商&#xff09;, distributors&#xff08;经销商&#xff09;, and suppliers&#xff08;供应商&#xff09;-- everyone involved in moving a product fr…

【2023年4月美赛加赛】Y题:Understanding Used Sailboat Prices 三篇完整论文及代码

【2023年4月美赛加赛】Y题&#xff1a;Understanding Used Sailboat Prices 建25页完整论文及代码 1 题目 2023年MCM 问题Y:理解二手帆船价格 和许多奢侈品一样&#xff0c;帆船的价值也会随着年代和市场条件的变化而变化。所附的“2023_MCM_Problem_Y_Boats.xlsx”文件包括2…

实验室基础操作

一&#xff1a;FZmotion。 1&#xff1a;查看相机是否加入成功。 2&#xff1a;添加蒙版。 3&#xff1a;选择标定杆类型。500mm 4&#xff1a;标定。 5&#xff1a;数据传输。 二&#xff1a;MotionBuilder。 1&#xff1a;所使用插件。 2&#xff1a;fzmotion插件安装。 Mo…

React学习笔记七-事件处理

此文章是本人在学习React的时候&#xff0c;写下的学习笔记&#xff0c;在此纪录和分享。此为第七篇&#xff0c;主要介绍react中的事件处理。 事件处理 &#xff08;1&#xff09;通过onXxx属性指定事件处理函数&#xff08;注意大小写&#xff09; 1.react使用的是自定义(合…

数字图像处理 基于傅里叶变换的图像拼接

一、简述 这里讨论的算法主要是指应用于基于相机拍摄的显微镜的2D图像的拼接。基于2D显微图像的拼接通常只考虑x、y方向的位移。 图像拼接在图像处理中应用广泛。特别是对高分辨率标本成像的需求日益增加。通常,这些标本不适合显微镜的视野。为了克服这一缺点,使用移动样品的…

QT入门看这一篇就够了——超详细讲解(40000多字详细讲解,涵盖qt大量知识)

目录 一、Qt概述 1.1 什么是Qt 1.2 Qt的发展史 1.3 Qt的优势 1.4 Qt版本 1.5 成功案例 二、创建Qt项目 2.1 使用向导创建 2.2 一个最简单的Qt应用程序 2.2.1 main函数中 2.2.2 类头文件 2.3 .pro文件 2.4 命名规范 2.5 QtCreator常用快捷键 三、Qt按钮小程序 …