当前位置: 首页 > news >正文

华为OD机试真题 JavaScript 实现【找终点】【2023 B卷 100分】,附详细解题思路

在这里插入图片描述

一、题目描述

给定一个正整数数组,设为nums,最大为100个成员,求从第一个成员开始,正好走到数组最后一个成员,所使用的最少步骤数。

要求:

  1. 第一步必须从第一元素开始,且1 <= 第一步的步长 < len/2,len为数组的长度,需要自行解析;
  2. 第二步开始,只能以所在成员的数字走相应的步数,不能多也不能少,如果目标不可达返回-1,只输出最少的步骤数量;
  3. 只能向数组的尾部走,不能往回走;

二、输入描述

由正整数组成的数组,以空格分隔,数组长度小于100,请自行解析数据数量。

三、输出描述

正整数,表示最少的步数,如果不存在输出-1。

四、解题思路

  1. 给定一个正整数数组,设为nums;
  2. 遍历nums,根据题目描述“第一步的步长 < len/2”,因为从0开始,所以循环到nums.length / 2 - 1;
  3. 根据当前index的值,再走n步,循环往复;
    • 比如测试的输入4 2 9 5 3 8 1 5 5 7 2 6 9
    • 第一步为数字4,前进4步,到达nums[4],即为3;
    • 再走3步,到达nums[7],即为5;
    • 再走5步,正好到达最后一个数字9,完美;
  4. 判断最后一次的下角标是否等于最后一个,如果等于,则符合要求;
  5. 取符合要求的最小步骤数;
  6. 输出使用的最少步骤数,如果没有,输出-1。

五、JavaScript算法源码

/*** 求从第一个成员开始,正好走到数组最后一个成员,所使用的最少步骤数。*/
function calculate(nums) {const len = nums.length;// 最少步骤数,最大为100个成员let minSteps = Infinity;// 第一步的步长 < len/2for (let i = 0; i < Math.floor(len / 2); i++) {let index = i;let stepCount = 1;// 比如第一步为数字4,前进4步,到达nums[4],即为3,再走3步,到达nums[7],即为5,再走5步,正好到达最后一个数字9while (index < len - 1) {index += nums[index];stepCount++;}// 判断最后一次的下角标是否等于最后一个,如果等于,则符合要求if (index === len - 1) {minSteps = Math.min(minSteps, stepCount);}}// 输出使用的最少步骤数,如果没有,输出-1return minSteps === Infinity ? -1 : minSteps;
}

六、效果展示

1、输入

4 2 9 5 3 8 1 5 5 2 2 1 9

2、输出

3

3、说明

比如走0步,值为4,前进4步,到达nums[4],即为3,再走3步,到达nums[7],即为5,再走5步,正好到达最后一个数字9,花费4步。

比如走1步,值为2,前进2步,到达nums[9],即为1,再走1步,正好到达最后一个数字9,花费3步。

比如走3步,值为5,前进5步,到达nums[8],即为5,再走5步,正好到达最后一个数字9,花费3步。

取符合要求的最小步数,所以输出3。

在这里插入图片描述


🏆下一篇:华为OD机试真题 JavaScript 实现【相对开音节】【2022Q4 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JavaScript)真题(A卷+B卷)

每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

http://www.lryc.cn/news/93433.html

相关文章:

  • 详解数据仓库数据湖及湖仓一体
  • 基于注解切换、Hikari实现的SpringBoot动态数据源(支持JNDI)
  • Java中的动态链接VS操作系统动态链接
  • 深入理解Linux虚拟内存管理(七)
  • GSR II 智能速度辅助系统的型式认证和系统作为独立技术单元的型式认证测试流程和技术要求
  • 工厂方法模式(五)
  • 力扣笔记(每日随机一题)——最佳买卖股票时机含冷冻期
  • yolov5 6.1 关于 tensorrt 加速的使用以及问题说明
  • SVR(支持向量机)用法介绍
  • 是面试官放水,还是公司实在是太缺人?这都没挂,腾讯原来这么容易进···
  • 算法模板(5):数学(1):数学知识(1)
  • 电子行业 K 公司对接 Nexperia EDI 项目案例
  • chatgpt赋能python:Python如何将英文转化为中文的最佳方法
  • 知道这些英文文档翻译的方式吗
  • 供应链安全
  • 华硕天选4原装Windows11系统带ASUSRECOVERY恢复工厂模式安装
  • 数据库期末复习(8)并发控制
  • 一文说透:低代码开发平台和零代码平台区别是什么?
  • 4.将图神经网络应用于大规模图数据(Cluster-GCN)
  • pymongo更新数据
  • 手机软件测试规范(含具体用例)
  • mysql having的用法
  • 大数据需要学习哪些内容?
  • 【c++】static和const修饰类的成员变量或成员函数
  • DVWA-9.Weak Session IDs
  • Bug序列——容器内给/root目录777权限后无法使用ssh免密登录
  • 华为OD机试真题 JavaScript 实现【服务中心选址】【2023Q1 100分 】
  • <Linux>《OpenSSH 客户端配置文件ssh_config详解》
  • Linux内核中内存管理相关配置项的详细解析8
  • 深入浅出Vite:Vite打包与拆分