python 每日温度
作者:互联网
| 每日温度
请根据每日 气温 列表 temperatures ,请计算在每一天需要等几天才会有更高的温度。如果气温在这之后都不会升高,请在该位置用 0 来代替。
示例 1:
输入: temperatures = [73,74,75,71,69,72,76,73]
输出: [1,1,4,2,1,1,0,0]
示例 2:
输入: temperatures = [30,40,50,60]
输出: [1,1,1,0]
示例 3:
输入: temperatures = [30,60,90]
输出: [1,1,0]
单调栈题解法
python code
class Solution:
def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
length = len(temperatures)
stack = list()
result = [0] * length
for i, v in enumerate(temperatures):
# 如果是空栈 后者当前元素小于栈顶元素 直接入栈
if not stack or stack[-1][1] > v:
stack.append((i, v))
else:
# 如果栈顶元素大于当前元素 栈顶元素出栈 继续跟下一个栈顶元素对比
while True:
if stack and stack[-1][1] < v:
# 通过索引相减 得到升温之间间隔的天数
num = i - stack[-1][0]
index = stack.pop()[0]
result[index] = num
else:
# 把栈中比当前元素小的值全部弹出 最后在把当前元素入栈
stack.append((i, v))
break
return result
标签:result,示例,python,每日,元素,栈顶,temperatures,stack,温度 来源: https://blog.csdn.net/python_tian/article/details/121879023