给定一个整数数组
temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。
需要使用栈结构来找右边第一个更大元素 ,用单调栈可以在 O (n) 时间内完成。
python
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
n = len(temperatures)
stack = []
res = [0] * n
for i in range(n):
while stack and temperatures[i] > temperatures[stack[-1]]:
pre_index = stack.pop()
res[pre_index] = i - pre_index
stack.append(i)
return res