Python的每日温度

假设我们有一个每日温度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

    示例(Python)

    让我们看下面的实现以更好地理解-

    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]