題目描述
思路
- 單調棧 - 棧中存放數組元素的下標
class Solution:
def dailyTemperatures(self, T: List[int]) -> List[int]:
stack = []
res = [0] * len(T)
for i in range(len(T)):
if not stack or T[i] <= T[stack[-1]]: # 棧空 或 T[i]小於棧頂元素
stack.append(i)
else:
while stack and T[i]>T[stack[-1]]:
top = stack.pop()
res[top] = i-top
stack.append(i)
return res
-
複雜度分析
-
時間複雜度:,其中
n
是溫度列表的長度。正向遍歷溫度列表一遍,對於溫度列表中的每個下標,最多有一次進棧和出棧的操作。 -
空間複雜度:,其中
n
是溫度列表的長度。需要維護一個單調棧存儲溫度列表中的下標。