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

 

posted @ 2018-01-30 23:36  swallowblank  阅读(325)  评论(0编辑  收藏  举报