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

P2805. 找黄金宝箱(3)

简单通过率 46% · 提交 492 · 通过 228
哈希表滑动窗口

小慕在整理项目仓库时,无意中发现了一排编号从0到N的储物箱,每个箱子上都贴有一个数字标签。 小慕设定了一个咒语数字,想要检查是否存在两个不同的箱子,它们贴的数字相同,并且这两个箱子的小于等于咒语数字。如果存在这样的一对箱子,请返回最先找到的那对箱子中左边箱子的编号;如果不存在,则返回-1。

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

输入描述

第一行输入一个数字字串,数字之间使用逗号分隔,例如: 1,2,3,1字串中数字个数>=1,<=100000; 每人数字值>=-100000,<=100000: 第二行输入咒语数字,例如: 3,咒语数字>=1,<=100000

输出描述

存在这样的一对宝箱,请返回最先找到的那对宝箱左边箱子的编号,如果不存在则返回-1

示例

示例 1

输入

6,3,1,6
3

输出

0

说明:下标为0和3的两个元素6满足条件,输出较小的下标0

示例 2

输入

5,6,7,5,6,7
2

输出

-1

说明:数组中没有满足条件的两个元素。

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

看不懂题目?点开图解
样例:数字串 6,3,1,6,咒语数字=3 6 编号0 3 编号1 1 编号2 6 编号3 数字相同(6) 编号差 = 3 - 0 = 3 条件:编号差 3 ≤ 咒语数字 3 → 满足 最先找到的一对:左边箱子编号 = 0 输出:0
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「找黄金宝箱(3)」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。