给定一个整数数组
temperatures,表示每天的温度,返回一个数组answer,其中answer[i]是指对于第i天,下一个更高温度出现在几天后。如果气温在这之后都不会升高,请在该位置用0来代替。
需要使用栈结构来找右边第一个更大元素,用单调栈可以在 O (n) 时间内完成。
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