华为OD机试 - 最小步骤数(Java 2023 B卷 100分)

news2024/12/24 3:59:03

在这里插入图片描述

目录

    • 专栏导读
    • 一、题目描述
    • 二、输入描述
    • 三、输出描述
    • 四、解题思路
    • 五、Java算法源码
    • 六、效果展示
      • 1、输入:4 8 7 5 2 3 6 4 8 1
      • 2、输出:2
      • 3、说明:
      • 4、思路分析

华为OD机试 2023B卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

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

要求:

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

二、输入描述

有正整数数组空格分割,数组长度<100。

三、输出描述

正整数 最小步数,不存在输出-1。

四、解题思路

题目要求计算从第一个成员开始正好走到数组最后一个成员所使用的最小步骤数。

步骤要求如下:

  1. 第一步必须从第一个元素起,步长范围为 [1, len/2),其中 len 为数组长度;
  2. 从第二步开始,只能以当前成员的数字作为步数走,不能多也不能少;
  3. 目标不可达时返回 -1,只输出最小的步骤数量;
  4. 只能向数组的尾部走,不能向回走。

具体解题思路如下:

  1. 读取输入的正整数数组;
  2. 初始化数组长度为 len,转换为整型数组 arr;
  3. 初始化最小步数 minCount 为 0;
  4. 从第一步开始,遍历步长从 1 到 len/2 的各种情况:
    • 设置步数 count 为 1,位置 index 为当前步长;
    • 从第二步开始,根据当前位置的数字进行走步操作,直到走出数组范围或者到达最后一个成员;
    • 如果走的长度超出了范围,则说明这种情况不符合要求,退出循环;
    • 如果刚好走到最后一个成员,更新最小步数 minCount。
  5. 根据最小步数 minCount 的值输出结果,如果为 0 则输出 -1,否则输出 minCount。

五、Java算法源码

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String[] nums = scanner.nextLine().split(" ");

    int len = nums.length;
    int[] arr = new int[len];
    for (int i = 0; i < len; i++) {
        arr[i] = Integer.parseInt(nums[i]);
    }

    int minCount = 0;

    // 第1步最多只能走 len/2,遍历各种情况
    for (int i = 1; i < len / 2; i++) {
        // 走出第一步后的步数和位置
        int count = 1;
        int index = i;

        // 从第2步开始只能以所在成员的数字走相应的步数
        while (true) {
            // 再走一步
            index += arr[index];

            // 步数加1
            count++;

            if (index > len - 1) {
                // 当走的长度超出了范围,说明这种情况不符合要求
                break;
            } else if (index == len - 1) {
                // 刚好走到最后一个成员,更新最小步数
                if (minCount == 0) {
                    minCount = count;
                } else {
                    minCount = Math.min(minCount, count);
                }
                break;
            }
        }
    }

    if (minCount == 0) {
        System.out.println(-1);
    } else {
        System.out.println(minCount);
    }
}

六、效果展示

1、输入:4 8 7 5 2 3 6 4 8 1

2、输出:2

3、说明:

  1. 第一个可选步长选择2;
  2. 从第一个成员4开始走两步到7;
  3. 第二步:从7经过7个成员到最后。

4、思路分析

  1. 1<=第一步步长<len/2 (len为数组长度),需要遍历第一步的各种可能;
  2. 从第二步开始只能以所在成员的数字走相应的步数,不能多不能少;
  3. 只能向数组的尾部走不能向回走;

在这里插入图片描述

🏆下一篇:华为OD机试 - 荒岛求生 - 栈Stack(Java 2023 B卷 100分)

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

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068811.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全总结

前言 本文内容主要摘抄网络规划设计师的教材和腾讯-SUMMER课堂&#xff0c;主要对网络安全进行简单梳理和总结 OSI安全体系 X轴表示8种安全机制&#xff0c;Y轴表示OSI7层模型&#xff0c;Z轴表示5种安全服务&#xff0c;图中X是水平&#xff0c;Y轴竖直&#xff0c;Z轴向外…

2023年中国喷头受益于技术创新,功能不断提升[图]

喷头行业是一个专注于生产和供应各种类型喷头的产业。喷头是一种用于将液体、气体或粉末等物质喷射或喷洒的装置&#xff0c;广泛应用于不同领域&#xff0c;包括工业、农业、家用、医疗等。 喷头行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#xff09; 随…

Redis 获取、设置配置文件

以Ubuntu 为例 redis配置文件 cd /etc/redis sudo vim redis.conf 获取配置文件、修改配置文件

【轻松玩转MacOS】网络连接篇

引言 本篇让我们来聊聊网络连接。不论你是在家、在办公室&#xff0c;还是咖啡厅、机场&#xff0c;几乎所有的MacOS用户都需要连接到互联网。在这个部分&#xff0c;我们将向你展示如何连接到互联网和局域网。让我们开始吧&#xff01; 一、连接到互联网 首先&#xff0c;我…

农业育种好策略:凌恩生物种质资源数字化全方位解决方案

动植物育种是通过创造遗传变异、改良遗传特性&#xff0c;以培育具有优良性状的动植物新品种的技术。随着高通量组学技术的发展和应用&#xff0c;分子育种等现代科学理论与技术得以发展和不断完善&#xff0c;是未来作物育种的不二选择&#xff0c;它的精准性、高效性都将带领…

NoSQL之 Redis命令工具及常用命令

目录 1 Redis 命令工具 1.1 redis-cli 命令行工具 1.2 redis-benchmark 测试工具 2 Redis 数据库常用命令 2.1 set&#xff1a;存放数据&#xff0c;命令格式为 set key value 2.2 get&#xff1a;获取数据&#xff0c;命令格式为 get key 2.3 keys 命令可以取符合规则的…

深入探索地理空间查询:如何优雅地在MySQL、PostgreSQL及Redis中实现精准的地理数据存储与检索技巧

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

入门级气传导耳机推荐哪款?安利几款好用的气传导耳机

​在当今的快节奏生活中&#xff0c;音乐成为了我们放松身心的重要方式。然而&#xff0c;我们在享受音乐的同时&#xff0c;也面临着耳机线缆的束缚和耳朵的压迫感。这时&#xff0c;气传导耳机应运而生&#xff0c;它们以一种更加先进、舒适的方式来传递音乐&#xff0c;为我…

【C++】-C++11中的知识点(上)--右值引用,列表初始化,声明

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树&#x1f388; &#x1f389;作者宣言&#xff1a;认真写好每一篇博客&#x1f4a4; &#x1f38a;作者gitee:gitee✨ &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 动态规划算法&#x1f384; 如 果 你 …

Linux基本指令一

Linux基本指令一 一、ls指令1、语法2、功能3、常用选项4、示例 二、pwd指令1、功能2、示例 三、cd指令1、语法2、功能3、常用操作4、示例 四、 touch指令1、语法2、功能3、示例 五、mkdir指令1、语法2、功能3、常用选项4、示例 六、rmdir指令1、语法2、适用对象3、功能4、常用选…

孙哥Spring源码第27集

第27集、手写实现AOP 【视频来源于&#xff1a;B站up主孙帅suns Spring源码视频】【微信号&#xff1a;suns45】 1、手写实现AOP的缺点有哪些&#xff1f; 增加额外功能时&#xff0c;会对所有的方法 都加入对应的功能 问题 不灵活 &#xff08;事务 CUD 加入 R 不应该加入&a…

聊聊JDK19特性之虚拟线程 | 京东云技术团队

1.前言 在读《深入理解JVM虚拟机》这本书前两章的时候整理了JDK从1.0到最新版本发展史&#xff0c;其中记录了JDK这么多年来演进过程中的一些趣闻及引人注目的一些特性&#xff0c;在调研JDK19新增特性的时候了解到了虚拟线程这个概念&#xff0c;于是对虚拟线程进行学习整理内…

LLM项目代码改写

背景&#xff1a; 最近在做代码大语言模型生成项目代码的课题。代码生成现在大部分的工作是在做即时代码生成&#xff0c;这个有点类似代码智能提示&#xff0c;只不过生成的可能是一段片段代码&#xff1b;然而对于整个项目代码的生成做的团队并不多&#xff0c;原因大致如下…

Jenkin 添加节点报错No Known Hosts file was found

/var/lib/jenkins/.ssh/known_hosts [SSH] No Known Hosts file was found at /var/lib/jenkins/.ssh/known_hosts. Please ensure one is created at this path and that Jenkins can read it. /var/lib/jenkins/.ssh/known_hosts 存了是已经接受SSH key认证的目标节点&#x…

ASP.NET Core教程:ASP.NET Core 程序部署到Windows系统

框架依赖 一、发布 框架依赖&#xff08;FDD&#xff09;&#xff1a;即Framework-dependent deployments的缩写。这种发布方式依赖于Framework框架&#xff0c;即要部署的服务器上面必须按照ASP.NET Core 运行时环境(ASP.NET Core Runtime)。这种部署方式是微软默认推荐的。下…

美妆行业在微信小程序中可以实现什么功能

随着移动互联网的发展&#xff0c;微信小程序作为一种轻量级的应用形态&#xff0c;越来越受到商家的青睐。对于美妆行业来说&#xff0c;微信小程序不仅可以提高品牌曝光率&#xff0c;提升用户体验&#xff0c;还可以通过各种功能实现销售转化。下面我们将介绍美妆行业在微信…

软件工程从理论到实践客观题汇总(头歌第一章至第八章)

一、软件工程课程概述 1、计算机软件的变化 2、实践准备-协同开发方法与平台 3、实践准备-群体化代码标注平台 4、实践准备-群体化学习平台 二、从程序到软件 1、程序及其质量 2、程序质量保证方法 3、程序质量分析方法 4、软件及其质量 5、开源软件 三、软件工程概述 1、…

通讯网关软件018——利用CommGate X2MQTT实现MQTT访问OPC Server

本文介绍利用CommGate X2MQTT实现MQTT访问OPC Server。CommGate X2MQTT是宁波科安网信开发的网关软件&#xff0c;软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示&#xff0c;SCADA系统配置OPC Server&#xff0c;现在上位机需要通过MQTT Subscr…

ORACLE中SQL运算符的优先级

SQL运算符优先级: 注&#xff1a; 1、可以使用括号改变优先级顺序 2、可以看出OR的优先级最低&#xff0c;算术运算符的优先级最高 另&#xff1a;操作符优先级 * / - 1、乘除的优先级高于加减&#xff1b; 2、同一优先级运算符从左向右执行&#xff1b; 3、括号内的…

yolo_tracking中osnet不支持.pth格式,而model_zoo中仅有.pth

yolo_traking-7.0中REID模块用到了osnet&#xff0c;track.py中模型文件不支持.pth&#xff0c;而model_zoo中仅有.pth&#xff0c;改动代码太麻烦了&#xff0c;网上查到的.pth文件转化为.pt文件都需要读取网络架构&#xff0c;不太可能实现。 读取osnet_x0_25_msmt17.pth发现…