前往此题

解题思路

  • 创建栈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