
解题思路
- 创建栈
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