题目大意
给你接下来每一天的气温,求出对于每一天的气温,下一次出现比它高气温的日期距现在要等多少天
解题思路
利用单调栈,维护一个单调递减的栈
将每一天的下标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