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

P2650. 找朋友

中等通过率 66% · 提交 915 · 通过 604
单调栈模拟

小慕在组织班级活动时,N个同学站成一排,第i个同学的身高为height[i]。每个同学向右看,找到第一个比自己高的同学j,那么j就是i的好朋友(j > i)。 请帮小慕生成一个列表,列表中每个位置输出对应同学的好朋友所在的位置,如果没有找到好朋友,则该位置输出0。同学人数范围是 [0, 40000]。

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

输入描述

<p> 第一行输入N,表示有N个小朋友 </p> <p> 第二行输入N个小朋友的身高height[i],都是整数 </p>

输出描述

输出N个小朋友的好朋友的位置

示例

示例 1

输入

8
123 124 125 121 119 122 126 123

输出

1 2 6 5 5 6 0 0

示例 2

输入

2
100 95

输出

0 0

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

看不懂题目?点开图解
找朋友:右边第一个更高 123 124 125 121 119 122 126 123 →② →③ →⑦ →⑥ →⑥ →⑦ 每个小朋友向右找第一个比自己高的,箭头指向好朋友位置
写完代码点「提交」,将对全部测试用例判题。

向老师提问

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