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

P2658. 流量波峰

中等通过率 52% · 提交 212 · 通过 110
单调栈贪心

小慕正在监控一个项目的流量数据,每个时间点都会出现流量波动,形成高低起伏的波峰与波谷。现在,小慕想找出流量变化最快的波峰,你能帮他吗? 给定一个整数数组nums,代表各采样点的流量值。请找出所有满足以下条件的三元组(i,j,k):其中i nums[i]且nums[j] > nums[k](即j是峰顶),并返回所有满足条件的三元组中(k-i)的最小值。

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

输入描述

第一行为n个整数,表示数组中的n个元素,0 <= n <= 100000

输出描述

返回所有满足条件的三元组中(k-i)的最小值。若不存在,返回-1。

示例

示例 1

输入

3 5 4 7 2 1

输出

2

说明:满足条件的三元组为[0, 1, 2],距离2

示例 2

输入

4 3 2 1

输出

-1

说明:无法找到满足条件的三元组,返回-1

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

看不懂题目?点开图解
0 1 2 3 4 3 5 4 7 2 i=0 j=1 k=2 k-i = 2 示例:波峰 (i=0, j=1, k=2)
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「流量波峰」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。