LC 速查

HOT 100索引 › B12 栈 Stack

LC 739每日温度Daily Temperatures 中等

给定每日温度数组,对每一天求还要等几天才会出现更高温度,等不到则该位为 0。

思路 单调栈存下标(栈内温度递减),遇到更高温度时弹栈结算 ans[j]=i-j。O(n)。

class Solution:
    def dailyTemperatures(
            self, temperatures: List[int]) -> List[int]:
        n = len(temperatures)
        ans = [0] * n
        st = []
        for i, t in enumerate(temperatures):
            while st and temperatures[st[-1]] < t:
                j = st.pop()
                ans[j] = i - j
            st.append(i)
        return ans
← 上一题 字符串解码柱状图中最大的矩形 下一题 →