思路
一个朴素的思想是:双重循环枚举,从后往前枚举每个元素ai,然后每次往后寻找第一个大于它的元素的下标。如以下动画所示👇
从后往前枚举i的过程中,我们可以动态的维护一个栈,用于弹出那些无用的元素,减少重复计算。
P4081.每日温度
LeetCode 739. 每日温度
题目描述
给定一个长度为 n 的整数数组 temperatures,其中 temperatures[i] 表示第 i 天的温度。
请返回一个数组 answer,其中 answer[i] 表示对于第 i 天,下一个更高温度出现在几天后。
如果在这之后气温都不会升高,则在该位置用 0 代替。
输入描述
第一行输入一个整数 n,表示数组 temperatures 的长度。
第二行输入 n 个整数,表示每天的温度。
输出描述
输出 n 个整数,表示数组 answer。
相邻两个整数之间用一个空格隔开。
样例 1
输入
8
73 74 75 71 69 72 76 73
输出
1 1 4 2 1 1 0 0
样例 2
输入
4
30 40 50 60
输出
1 1 1 0
样例 3
输入
3
30 60 90
输出
1 1 0
数据范围
1<=n<=105
30<=temperatures[i]<=100