解题思路
- 创建栈
stack
,用于存储需要放进栈中的元素的索引i
- 创建与温度列表相同长度的列表
res
,默认值都为0
当我们遍历温度列表temperatures
时,如果stack
为空,则i
直接入栈,如果不为空则比较temperatures[stack[-1]]
与temperatures[i]
的大小,如果temperatures[i]
大于temperatures[stack[-1]]
,将两者之间的索引差i - stack.pop()
放入res[i]
中。
代码
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
N = len(temperatures)
stack = []
res = [0] * N
for i in range(N):
tmp = temperatures[i]
while stack and tmp > temperatures[stack[-1]]:
prev = stack.pop()
res[prev] = i - prev
stack.append(i)
return res