AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P2811. 跳房子I

简单通过率 40% · 提交 1,999 · 通过 792
哈希表枚举数学

小慕正在设计一款“数字跳格子”小游戏。 游戏规则是:玩家需要从第1格开始,在若干回合内跳到最后一格。每一回合,玩家可以选择向前跳或向后跳任意步数。 现在,小慕把总格数设为 count,并将每回合可能跳的步数记录在数组 steps 中。他想知道,是否存在一种,可以让玩家恰好用两个回合跳到最后一格。 如果存在,请找出的那个步数组合。 注意: - 数组中的步数可以重复出现,但每个元素只能使用一次。 - 题目保证存在满足条件的组合,且索引和最小的组合是唯一的。

提示:带虚线的词点一下有通俗解释。

输入描述

<p> 第一行输入为每回合可能连续跳的步数,它是整数数组类型。 </p> <p> 第二行输入为房子总格数count,它是int整数类型。 </p> <p> count ≤ 1000 </p> <p> 0 ≤ steps.length ≤ 5000 </p> <p> -100000000 ≤ steps ≤ 100000000 </p>

输出描述

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

示例

示例 1

输入

[1,4,5,2]
7

输出

[5,2]

示例 2

输入

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

输出

[-1,9]

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
跳房子两回合问题图解 1 2 3 4 5 6 7 最后一格 第一回合:跳4步 第二回合:跳3步 示例:steps = [1,4,5,2], count = 7 索引0:1, 索引1:4, 索引2:5, 索引3:2 组合 (5,2) 索引和=2+3=5 最小 组合 (4,3?) 不存在,因为3不在数组中
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「跳房子I」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。