【4】739. 每日温度 python

题目:

          ​​​​​​​

 题解:

这个题使用最好使用单调栈,比暴力更优

栈底始终保持是最大值

要入栈的元素比栈底元素小,则直接入栈;

比栈顶(栈中最上面)的元素大,则小元素出栈,有出栈的就对应一个等待天数,出栈的元素对应的等待天数就为两数下标差(入-出 即 当前下标-栈顶下标),注意入栈的是温度对应的下标

初始化一个跟温度数组等长的全0数组,将计算出的下标差结果存入result数组中

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        result = [0] * len(temperatures)
        # result=[0 for i in range(len(temperatures))]
        stack=[]
        for i in range(len(temperatures)):
            # 栈不为空且当前温度大于栈顶元素时,计算下标差栈顶元素出栈,写入result
            while stack and temperatures[i]>temperatures[stack[-1]]:
                result[stack[-1]] = i-stack[-1]
                stack.pop()
            # 当前温度小于栈顶时,直接入栈
            stack.append(i)
        return result

result = [0] * len(temperatures)比result=[0 for i in range(len(temperatures))]用时短

草稿图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值