lc739.每日温度

 

题目链接

这是一个典型的单调栈的题目。首先思考“无脑入栈”的情况,取反后将答案与栈状态的更新编辑一下即可。这个算法的时间复杂度是O(N),空间复杂度是O(N)。

python:

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        size = len(temperatures)
        ans = [0]*size
        stack = []
        for i in range(size):
            while stack and temperatures[stack[-1]] < temperatures[i]:
                ans[stack[-1]] = i - stack[-1]
                stack.pop()
            stack.append(i)
        return ans