每日温度
Daily Temperatures
本机进度仅保存在当前浏览器
题目描述
给定一个整数数组 temperatures 表示每天的温度,返回一个数组 answer,其中 answer[i] 是指对第 i 天来说,还要等多少天才能等到更暖和的温度;之后都没有更暖的则记 0。
示例:temperatures = [73, 74, 75, 71, 69, 72, 76, 73],输出 [1, 1, 4, 2, 1, 1, 0, 0]。
解题思路
- 本质是"下一个更大元素"的变体:对每个 i 找右边第一个比它大的下标 j,答案为 j - i。
- 单调递减栈:栈里存"还在等更暖天"的下标,对应温度自栈底到栈顶递减。
- 新温度高于栈顶时,栈顶元素的答案确定(当前下标减栈顶),弹出并重复。
- 每个下标最多入栈出栈各一次,O(n) 完成。
参考实现
查看参考实现Python · 建议先自行作答
def dailyTemperatures(T):
# 单调递减栈存下标,遇到更暖天即结算栈顶
stack = []
ans = [0] * len(T)
for i, t in enumerate(T):
while stack and T[stack[-1]] < t:
j = stack.pop()
ans[j] = i - j
stack.append(i)
return ans