zoukankan      html  css  js  c++  java
  • 739. Daily Temperatures && 单调栈 && Python collections deque

    题目大意

    给你接下来每一天的气温,求出对于每一天的气温,下一次出现比它高气温的日期距现在要等多少天

    解题思路

    利用单调栈,维护一个单调递减的栈

    将每一天的下标i入栈,维护一个温度递减的下标

    若下一个温度p,比栈顶元素对应的温度p'要高,就出栈,且p就是p'的最近的“高温”

    代码实现

     1 from collections import deque
     2 class Solution:
     3     def dailyTemperatures(self, temperatures):
     4         ans = [0]*len(temperatures)
     5         stack = deque()
     6         for i in range(len(temperatures)):
     7             if len(stack) == 0:
     8                 stack.append(i)
     9             else:
    10                 while temperatures[i] > temperatures[stack[len(stack)-1]]:
    11                     pos = stack.pop()
    12                     ans[pos] = i - pos
    13                     if len(stack) == 0:
    14                         break
    15                 stack.append(i)
    16         return ans
    17                 
    View Code
  • 相关阅读:
    【程序25】
    【程序24】
    【程序23】
    【程序22】
    【程序21】
    【程序20】
    【程序19】
    【程序18】
    string用法总结
    快速排序
  • 原文地址:https://www.cnblogs.com/liwenchi/p/8387864.html
Copyright © 2011-2022 走看看