华为OD机试 - 跳房子I(Java 2024 E卷 100分)

news2024/9/19 11:38:54

在这里插入图片描述

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

专栏导读

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

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

跳房子,也叫跳飞机,是一种世界性的儿童游戏。

游戏的参与者需要步分个回合跳到第1格直到房子的最后一格。

跳房子的过程中,可以向前跳,也可以向后跳。

假设有若干步的步长数量是count,小红每回合可能连续跳的步数都放在数组steps中,请问数组中是否有一种步数的组合,可以让小红两个回合跳到最后一格?

如果有,请输出索引和最小的步数组合。

注意:

  1. 数组中的步数可以重复,但数组中的元素不能重复使用。
  2. 提供的数组保证存在满足题目要求的组合,且索引和最小的步数组合是唯一的。

二、输入描述

第一行输入为小红每回合可能连续跳的步数,它是int整数数组类型。

第二行输入为房子总格数count, 它是int整数类型。

备注

  • count ≤ 1000
  • 0 ≤ steps.length ≤ 5000
  • -10000000 ≤ steps ≤ 10000000

三、输出描述

返回索引和最小的满足要求的步数组合 (顺序保持steps中原有顺序)

四、测试用例

测试用例1:

1、输入

[1,4,5,2,2]
7

2、输出

[5, 2]

3、说明

可行的两步组合有 [1, 2] (索引和 0+3=3)、[1, 2] (索引和 0+4=4)、[4, 2] (索引和 1+3=4)、[4, 2] (索引和 1+4=5)、[5, 2] (索引和 2+3=5)、[5, 2] (索引和 2+4=6)。

其中,[5, 2] 满足和等于 7,并且索引和最小(5,索引 2 和 3)。因此输出为 [5, 2]。

测试用例2:

1、输入

[-1,2,4,9,6]
8

2、输出

[-1, 9]

3、说明

此样例有多种组合满足两回合跳到最后,譬如[-1,9], [2,6],其中[-1,9]的索引和为0+3=3, [2,6]的索引和为1+4=5, 所以索引和最小的步数组合为[-1,9].

五、解题思路

这个问题可以看作是一个寻找两数之和的问题,但有一些特定的要求:

  1. 两数之和等于目标值: 我们需要找到两个步数的组合,这两个步数的和要等于给定的房子总格数 count。
  2. 不能使用相同的元素两次: 每次只能使用数组中的不同元素,即不能使用同一个步数元素的两个相同实例。
  3. 最小索引和: 如果存在多个组合满足条件,需要选择索引和最小的那个组合。
  4. 保证存在唯一解: 根据题目描述,保证有且仅有一个解满足条件。

详细解题步骤

  1. 初始化: 使用一个 minIndexSum 变量来存储最小的索引和,初始值设置为 Integer.MAX_VALUE。用一个 result 列表来存储最终满足条件的步数组合。
  2. 双重循环遍历数组: 使用两层循环来遍历 steps 数组的每一个可能的两步组合。外层循环变量 i 从0到 steps.length - 1,内层循环变量 j 从 i + 1 到 steps.length - 1。这确保了不会使用同一个元素两次,并且不会重复组合。
  3. 判断两步之和: 对于每一个组合 steps[i] 和 steps[j],计算其和并检查是否等于 count。这是核心的判断条件。
  4. 更新最小索引和: 如果找到了满足条件的步数组合,计算其索引和 i + j。如果这个索引和比当前的 minIndexSum 小,就更新 minIndexSum 并更新 result 为当前的步数组合。
  5. 输出结果: 最后,将找到的最小步数组合输出。

六、Java算法源码

public class OdTest03 {
    public static List<Integer> findMinimalStepCombination(int[] steps, int count) {
        List<Integer> result = new ArrayList<>();
        int minIndexSum = Integer.MAX_VALUE;

        // 使用双重循环来遍历所有可能的步数组合
        for (int i = 0; i < steps.length; i++) {
            for (int j = 0; j < steps.length; j++) {
                // 确保不同的元素,且计算和为count
                if (i != j && steps[i] + steps[j] == count) {
                    int indexSum = i + j;
                    // 如果找到更小的索引和,更新结果
                    if (indexSum < minIndexSum) {
                        minIndexSum = indexSum;
                        result.clear();
                        result.add(steps[i]);
                        result.add(steps[j]);
                    }
                }
            }
        }
        return result;
    }

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

        // 读取步数数组
        String input = scanner.nextLine();
        String[] stepsStr = input.substring(1, input.length()-1).split(",");
        int[] steps = new int[stepsStr.length];
        for (int i = 0; i < stepsStr.length; i++) {
            steps[i] = Integer.parseInt(stepsStr[i]);
        }

        // 读取房子总格数
        int count = scanner.nextInt();

        // 计算结果并输出
        List<Integer> result = findMinimalStepCombination(steps, count);
        System.out.println(result);
    }
}

七、效果展示

1、输入

[3,1,4,2,6]
5

2、输出

[3, 2]

3、说明

可行的两步组合有 [3, 2] (索引和 0+3=3)、[1, 4] (索引和 1+2=3)。

[3, 2] 和 [1, 4] 都满足和等于 5,且索引和均为 3。根据原数组顺序第一个符合条件的组合是 [3, 2]。

按照题目要求保持顺序,因此输出为 [3, 2]。

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 D卷 200分)

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

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

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

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

相关文章

高效驱动之选 ——KP85211ASGA 半桥栅极驱动器 内置互锁死区

KP85211A是一款 225V 耐压&#xff0c;具有 1A 拉电流和 1.5A 灌电流能力的半桥栅极驱动器&#xff0c;专用于驱动功率MOSFET或IGBT。采用高压器件工艺技术&#xff0c;具有良好的电流输出及出色的抗瞬态干扰能力。可保证开关节点 VS 瞬态 -7V 情况下系统正常工作。可支持开关节…

SpringBoot自定义启动器(自定义Starter)

一、如何理解 SpringBoot 的 starter 机制 Spring Boot 的 Starter 机制是其简化开发流程的关键特性之一。通过提供 预配置的依赖项 和 自动配置 支持&#xff0c;这一机制极大地简化了项目的依赖管理和配置工作&#xff0c;使得开发者可以更快地搭建应用程序框架&#xff0c;…

【系统分析师】计算机组成与体系架构

计算机硬件组成&#xff0c;运算器&#xff0c;控制器 计算机基本硬件系统五大组成部分&#xff1a;运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;I/O设备 运算器的四个重要寄存器&#xff1a; 算术逻辑单元&#xff08;实时对数据的算术和逻辑运算&#xff0c;…

C语言 ——— 学习并使用 #if defined #ifdef #ifndef 条件编译指令

目录 学习 #if defined #ifdef #ifndef 条件编译指令 使用 #if defined 和 #ifdef 条件编译指令 使用 #ifndef 条件编译指令 学习 #if defined #ifdef #ifndef 条件编译指令 #if #ifndef 条件编译指令是用来判断某个符号是否被定义过&#xff0c;被定义过的话就为真&#x…

代码随想录冲冲冲 Day41 动态规划Part9

188. 买卖股票的最佳时机 IV 昨天题目是买卖两次&#xff0c;这里是设定好k次 2次的时候一共包含了5中情况 那么k次就包含了2 k 1种情况 初始化只有1 &#xff0c; 3 &#xff0c;5 也就是买入的状况是有值的&#xff0c;所以初始化时候只需要看这些情况知道2 k 之后只要把…

C++11(2)

目录 6。左值引用和右值引用 下面演示左值和左值引用&#xff1a; 下面演示右值和右值引用&#xff1a; 7。移动构造和移动赋值 VS2022的神级优化 List下的移动构造拷贝和深拷贝(实战) 证明&#xff1a;左值是由编译器决定的 附加&#xff1a;自己实现的List.h 6。左值引…

欺诈文本分类检测(十四):GPTQ量化模型

1. 引言 量化的本质&#xff1a;通过将模型参数从高精度&#xff08;例如32位&#xff09;降低到低精度&#xff08;例如8位&#xff09;&#xff0c;来缩小模型体积。 本文将采用一种训练后量化方法GPTQ&#xff0c;对前文已经训练并合并过的模型文件进行量化&#xff0c;通…

fuxa搭建与使用(web组态)

1. 安装Node.js -> npm安装 参考网址&#xff1a;https://blog.csdn.net/WHF__/article/details/129362462 一、安装运行 C:\WINDOWS\system32>node -v v20.17.0 C:\WINDOWS\system32>npm -v 10.8.2 二、环境配置 在安装路径&#xff08;D:\Program_Files\nodejs&a…

打开VSCod安装“PHP Intelephense”或“PHP Server”PHP扩展

安装PHP扩展&#xff1a; 打开VSCode&#xff0c;进入扩展视图&#xff08;或使用快捷键CtrlShiftX&#xff09;。搜索并安装“PHP Intelephense”或“PHP Server”等PHP相关扩展&#xff0c;这些扩展提供了PHP代码的智能感知、代码导航、调试等功能。 配置PHP路径&#xff1a;…

第2章 方法

本书作者起初以为仅靠研究命令行工具和指标就能提高性能。他认为这样不对。他从头到尾读了一遍手册&#xff0c;看懂了缺页故障、上下文切换和其他各种系统指标的定义&#xff0c;但不知道如何处理它们&#xff1a;如何从发现信号到找到解决方案。 他注意到&#xff0c;每当出…

第 8 章图像内容分类

本章介绍图像分类和图像内容分类算法。首先&#xff0c;我们介绍一些简单而有效的方法和目前一些性能最好的分类器&#xff0c;并运用它们解决两类和多类分类问题&#xff0c;最后展示两个用于手势识别和目标识别的应用实例。 8.1 K邻近分类法&#xff08;KNN&#xff09; 在…

2024最新精选文章!分享5款论文ai生成软件

在2024年&#xff0c;AI论文生成软件的出现极大地提升了学术写作的效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。以下是五款值得推荐的AI论文生成软件&#xff0c;其中特别推荐千笔-AIPassPaper。 ### 千笔-AIPa…

shader 案例学习笔记之step函数

step函数 step(edge,x)&#xff1a;当x>edge时返回1&#xff0c;否则返回0 #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution;void main(){vec2 st gl_FragCoord.xy/u_resolution.xy;float f step(0.5, st.x);gl_FragColor vec4(f, 0, 0, 1.0); …

JQuery中的$

}); 当jquery.color.js动画插件加载完毕后&#xff0c;单击id为“go”按钮时&#xff0c;class为block的元素就有了颜色动画变化。 $.getJSON() $.getJSON()方法用于加载JSON文件&#xff0c;与$.getScript()方法的用法相同。 我们来看demo2. demo2.html 已有评论&#xff1…

Linux下如何使用CMake实现动态库的封装与调用

一、动态库的封装 1.创建工程 首先创建一个qt工程&#xff08;这里我采用的是ui工程&#xff09; 这里选择Widget工程 名字取一个和动态库相关的即可&#xff0c;我这里取的UIDLL 这里选择CMake 这里我选择命名为Dynamic kits采用Qt 5.14.2 GCC 64bit&#xff0c;之后直接下一…

Qt常用控件——QLabel

文章目录 QLabel核心属性文本格式演示显示图片文本对齐自动换行、边距、缩进设置伙伴 QLabel核心属性 QLabel是显示类控件&#xff0c;可以用来显示文本和图片 属性说明textQLabel中的文本textFormat文本格式Qt::PlainText纯文本Qt::RichText富文本&#xff08;支持html标签&…

html+css网页设计 旅游 雪花旅行社5个页面

htmlcss网页设计 旅游 雪花旅行社5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#…

Windows下meson编译libplacebo库

1、安装msys64&#xff0c;添加系统环境变量C:\msys64 2、修改msys64目录下msys2_shell.cmd文件&#xff1a; 去掉“rem set MSYS2_PATH_TYPEinherit” 中rem&#xff0c;以便于shell能继承系统环境变量&#xff0c;然后保存 rem To export full current PATH from environme…

ESP32 TCP通信交换数据Mixly Arduino编程

TCP通信交换数据 在ESP32与ESP32或其它局域网络内主机间传输数据时&#xff0c;TCP是很方便的&#xff0c;特别当我们连接互联网后ESPnow不能用&#xff0c;MQTT又不稳定发送大量的数据&#xff0c;同时蓝牙有其它用途时&#xff0c;那么学会TCP通信协议就变得十分重要。 一、…

Python数据结构集合的相关介绍

集合是一种无序、可变的数据结构&#xff0c;它也是一种变量类型&#xff0c;集合用于存储唯一的元素。集合中的元素不能重复&#xff0c;并且没有固定的顺序。在Python 提供了内置的 set 类型来表示集合&#xff0c;所以关键字set就是集合的意思。 你可以使用大括号 {} 或者 …