python 每日温度

2021/12/12 9:17:29

本文主要是介绍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


这篇关于python 每日温度的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程