数据结构
采用单调栈,要求单调递减
关键点
遍历温度数组,若当前数字小于或等于栈顶数字,则入栈
否则,弹出栈顶数字,并对弹出数字进行标注(当前数字是第一个比它大的)
举例
代码
def dailyTemperatures(temperatures):
"""
:type temperatures: List[int]
:rtype: List[int]
"""
stack=[]
num=[0 for _ in range(len(temperatures))]
for i in range(len(temperatures)):
#栈空入栈或比栈顶的小
if(len(stack)==0 or temperatures[i]<=stack[len(stack)-1][0]):
stack.append((temperatures[i],i))
#比栈顶大,则弹栈,并标注
else:
while(len(stack)!=0 and temperatures[i]>stack[len(stack)-1][0]):
num[stack[len(stack)-1][1]]=i-stack[len(stack)-1][1]
stack.pop()
stack.append((temperatures[i],i))
while(len(stack)!=0):
num[stack[len(stack) - 1][1]] = 0
stack.pop()
return num