编程语言
首页 > 编程语言> > python 每日温度

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