0
点赞
收藏
分享

微信扫一扫

【LeetCode】739.每日温度

天行五煞 2022-05-01 阅读 87

题目

https://leetcode-cn.com/problems/daily-temperatures/

代码

  • 单调栈解决这个问题

代码

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        # 使用单调栈解决本题
        res = []
        stack = [] # 模拟栈
        stack.append(len(temperatures)-1) # 放入最后一个元素        
        res.append(0)

        for i in reversed(range(len(temperatures)-1)):
            cur = temperatures[i]
            # 可以把下面的这层循环更加精简掉
            if cur >=  temperatures[stack[-1]] : 
                # 循环出栈,直到直到更大的,或者栈为空
                while(len(stack) and cur >= temperatures[stack[-1]]):
                    stack.pop() # 最后一位删除
                if len(stack) == 0: # 全删完了
                    stack.append(i)
                    res.append(0)
                else:                      
                    res.append(stack[-1]-i)
                    stack.append(i)
            else:
                res.append(stack[-1]-i)    
                stack.append(i)
        res.reverse()
        return res 

# temperatures = [73,74,75,71,69,72,76,73]
# # temperatures = [77,76,75,74,72,72,71]
# s = Solution()
# res = s.dailyTemperatures(temperatures)
# print(res)
举报

相关推荐

0 条评论