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