'''
栈的编程练习题:每日温度。
根据每日气温列表,请重新生成一个列表,
对应位置的输入是你需要再等待多久温度才会升高超过该日的天数。
如果之后都不会升高,请在该位置用 0 来代替。
分析如下:
假设第 0 天、第 1 天、……、第 7 天的温度依次是以下列表中的元素(单位均为华氏度):
l1 = [73, 74, 75, 71, 69, 72, 76, 73]
对应结果如下:l2 = [1, 1, 4, 2, 1, 1, 0, 0]
l2[0]这个元素 1,是指第 0 天的 73 华氏度要经过 1 天,也就是到第 1 天 74 华氏度时才能超过第 0 天的温度。
l2[2]这个元素 4,是指第 2 天的温度,l[2]也就是 75 华氏度,要经过 4 天也就是要到第 6 天也就是温度为 l[6]=76 时才能超过第二天的温度。
其余的都是同理。
如果到了列表结尾都没有超过那天温度的,l2 中对应的元素一律为 0。
'''
def daily_temperatures(temperatures):
stack = []
result = [0] * len(temperatures)
for i in range(len(temperatures)):
result[i] = len(stack)
while stack and temperatures[i] > temperatures[stack[-1]]:
result[stack.pop()] = i - stack[-1]
stack.append(i)
return result
print(daily_temperatures([73, 74, 75, 71, 69, 72, 76, 73]) )