📅  最后修改于: 2023-12-03 15:12:41.703000             🧑  作者: Mango
给定一个数组,其中每个元素表示该位置的天气温度。您需要找到下一个最高的温度的天数。如果它不是以后的某个日期,则该数字等于0。
例如,给定温度= [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 2, 3, 1, 1, 0, 0, 0]。
def dailyTemperatures(T):
stack = []
result = [0] * len(T)
for i, t in enumerate(T):
while stack and t > T[stack[-1]]:
prev_index = stack.pop()
result[prev_index] = i - prev_index
stack.append(i)
return result
本算法的时间复杂度为O(n),因为我们只遍历了一次天气温度列表。同时,我们最多将每个索引推入和弹出栈一次,所以空间复杂度为O(n)。