Given a list of daily temperatures T, return a list such that, for each day in the input, tells you how many days you would have to wait until a warmer temperature. If there is no future day for which this is possible, put 0 instead.

For example, given the list of temperatures T = [73, 74, 75, 71, 69, 72, 76, 73], your output should be [1, 1, 4, 2, 1, 1, 0, 0].

Note: The length of temperatures will be in the range [1, 30000]. Each temperature will be an integer in the range [30, 100].

Solution in python:

1.Brute force

class Solution:
    def dailyTemperatures(self, T: List[int]) -> List[int]:
        length = len(T)
        flag = [None for i in range(length)]
        for i in range(length):
            j = i
            while T[i] >= T[j]:
                j += 1
                if j == length:
                    flag[i] = 0
                    break
            if j < length:
                flag[i] = j-i
        return flag

Complexity analysis:

  • Time complexity: O(N^2)
  • Space complexity: O(N)

2.Stack

class Solution:
    def dailyTemperatures(self, T: List[int]) -> List[int]:
        length = len(T)
        stack = []
        flag = [0 for i in range(length)]
        i = 0
        while i < length:
            if len(stack) == 0 or T[i] <= T[stack[-1]]:
                stack.append(i)
                i += 1
            elif T[i] > T[stack[-1]] :
                index = stack.pop()
                flag[index] = i - index
        return flag

Complexity analysis:

  • Time complexity:O(N)
  • Space complexity:O(M)
最后修改日期: 2020年9月26日

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。