0
点赞
收藏
分享

微信扫一扫

【4】739. 每日温度 python

ITWYY 2022-01-24 阅读 59

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

栈底始终保持是最大值

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

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

初始化一个跟温度数组等长的全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))]用时短

 

举报

相关推荐

0 条评论