1. 程式人生 > >leetcode-739. 每日溫度

leetcode-739. 每日溫度

暴力 每日 turn sel and clas tac 給定 輸入

根據每日 氣溫 列表,請重新生成一個列表,對應位置的輸入是你需要再等待多久溫度才會升高的天數。如果之後都不會升高,請輸入 0 來代替。

例如,給定一個列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的輸出應該是 [1, 1, 4, 2, 1, 1, 0, 0]

提示:氣溫 列表長度的範圍是 [1, 30000]。每個氣溫的值的都是 [30, 100] 範圍內的整數。

思路:

  1. 暴力(超時)。

  2. 維護一個後一天的氣溫不比前一天的氣溫高的棧,這個棧對應的溫度是遞減的。每遍歷到一個元素與棧中的元素做對比,做相應處理即可(這裏我在棧中維護的是對應天氣的索引)。

代碼:

class Solution:
    def dailyTemperatures(self, temperatures):
        """
        :type temperatures: List[int]
        :rtype: List[int]
        """

        stack = []
        res = [0 for _ in temperatures]
        for i in range(len(temperatures) - 1):
            if temperatures[i] < temperatures[i + 1]:
                res[i] 
= 1 while len(stack) != 0 and temperatures[i + 1] > temperatures[stack[len(stack) - 1]]: res[stack[len(stack) - 1]] = i + 1 - stack[len(stack) - 1] stack.pop() else: stack.append(i) return res if __name__
== __main__: s = Solution() print(s.dailyTemperatures([73, 74, 75, 71, 69, 72, 76, 73]))

leetcode-739. 每日溫度