leetcode-739. 每日溫度
阿新 • • 發佈:2018-08-20
暴力 每日 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. 每日溫度