题目描述
给定一个整数数组 temperatures
,表示每天的温度,返回一个数组 answer
,其中 answer[i]
是指对于第 i
天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用 0
来代替。
示例 1:
输入: temperatures
= [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
示例 2:
输入: temperatures = [30,40,50,60] 输出: [1,1,1,0]
示例 3:
输入: temperatures = [30,60,90] 输出: [1,1,0]
思路
单调栈 单调栈,你该了解的,这里都讲了!LeetCode:739.每日温度_哔哩哔哩_bilibili 这个视频讲得很清楚
PS:栈保存索引,对比大小是temperatures里的数值
1)初始化结果数组,全都为0
2)单调栈里面保存的是温度数组的索引,初始化为0
3)从第一个温度数组里遍历,如果当前数值小于等于单调栈里的栈顶元素,将当前数据push到result数组里
4)当单调栈的数组不为空,且当前的数值持续比栈顶元素数值大,就将单调栈的栈顶元素pop出来,并记录结果到result里,