假设我们有一个每日温度T的列表,我们必须返回一个列表,以便对于输入中的每一天,显示出要等到温度升高才需要多少天。如果没有将来的日子可以使用,则存储0。例如,如果T = [73、74、75、71、69、72、76、73],则输出将为[1、1、4、2、1、1、0、0]。
为了解决这个问题,我们将遵循以下步骤-
ans:=与T大小相同的数组,并用0填充
定义一个堆栈,然后将0插入堆栈,然后i:= 1
而我<T的长度
将我插入堆栈
index:=堆栈顶部元素
ans [index]:= i –索引
从堆栈中删除顶部元素
而堆栈元素计数不为0且T [i]> T [堆栈顶部元素]
如果堆栈长度为0或T [i] <= T [堆栈顶部元素]
使我增加1
返回ans
让我们看下面的实现以更好地理解-
class Solution(object): def dailyTemperatures(self, T): ans = [0 for i in range(len(T))] stack = [] stack.append(0) i=1 while i <len(T): while len(stack) and T[i]>T[stack[-1]]: index = stack[-1] ans[index] = i-index stack.pop() if not len(stack) or T[i]<=T[stack[-1]]: stack.append(i) i+=1 return ans ob1 = Solution()print(ob1.dailyTemperatures([73,74,75,71,69,72,76,73]))
[73,74,75,71,69,72,76,73]
输出结果
[1, 1, 4, 2, 1, 1, 0, 0]