739. 每日温度(Python)

难度:★★★☆☆
类型:数组
方法:栈

力扣链接请移步本题传送门
更多力扣中等题的解决方案请移步力扣中等题目录

请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。

例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。

提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

解答

这道题与行星碰撞类似,在一维数组中存在结果与前后之间的关系影响时,可以用栈来做。

定义一个空栈stack(用来存储下标)和长度为T的长度的结果数组result(初始化为零),从前到后遍历所温度列表T中所有温度,每当遇到新的温度高于栈顶元素时,执行出栈操作,直到栈顶元素不再低于新加入的温度。再将当前的元素入栈。

在出栈的过程中,需要及时的将出栈元素与当前元素的下标差填充在结果列表中对应的位置。

class Solution:
    def dailyTemperatures(self, T):
        result = [0] * len(T)
        stack = []
        for i, temperature in enumerate(T):
            while stack and temperature > T[stack[-1]]:
                prev_index = stack.pop()
                result[prev_index] = i - prev_index
            stack.append(i)
        return result

如有疑问或建议,欢迎评论区留言~

有关更多力扣中等题的python解决方案,请移步力扣中等题解析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 739. 每日温度 题目来源:力扣(LeetCode)https://leetcode-cn.com/proble...
    大梦三千秋阅读 3,411评论 0 1
  • 题目: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。如果...
    禾木清清阅读 1,760评论 0 0
  • Leetcode 739 每日温度题解 [toc] 题目 请根据每日 气温 列表,重新生成一个列表。对应位置的输出...
    petrichor_c9f0阅读 3,764评论 0 0
  • 题目描述 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高的天数。如果之后都...
    莫小鹏阅读 3,392评论 0 0
  • 根据每日 气温 列表,请重新生成一个列表,对应位置的输出是需要再等待多久温度才会升高超过该日的天数。如果之后都不会...
    放下梧菲阅读 1,481评论 0 0

友情链接更多精彩内容