快轉到主要內容
  1. LeetCode/

LeetCode 739: Daily Temperatures

·1 分鐘· ·
LeetCode Daily Medium Stack Monotonic-Stack Array Temperature Waiting-Time Algorithm Data-Structure 溫度 堆疊 陣列 等待時間 演算法
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: Medium
第一次嘗試: 2025-08-10
總花費時間: 00:00.00
分類: 堆疊、單調堆疊、陣列
相關主題: 溫度監控、等待時間計算、堆疊操作

解題思路
#

關鍵洞察是對於每個溫度,我們需要找到下一個更暖的溫度。這可以使用單調堆疊的方法高效解決,我們維護一個溫度遞減順序的堆疊。當我們遇到更暖的溫度時,我們可以更新所有之前較冷溫度的等待天數。

解法
#

使用單調堆疊尋找下一個更暖溫度
#

class Solution:
    def dailyTemperatures(self, temperatures: List[int]) -> List[int]:
        n = len(temperatures)
        res = [0] * n
        stack = []

        for i in range(n):
            while stack and temperatures[stack[-1]] < temperatures[i]:
                idx = stack.pop()
                res[idx] = i - idx
            
            stack.append(i)

        return res

時間複雜度: O(n) 其中 n 是 temperatures 陣列的長度
空間複雜度: O(n) 用於堆疊的最壞情況

關鍵洞察
#

  1. 單調堆疊模式: 我們使用堆疊來維護遞減順序的溫度
  2. 下一個更暖溫度: 當我們找到更暖的溫度時,我們可以計算所有較冷溫度的等待天數
  3. 索引追蹤: 我們在堆疊中儲存索引以計算溫度之間的距離
  4. 高效更新: 每個溫度只能被推入和彈出一次,導致 O(n) 時間複雜度

收穫
#

  • 單調堆疊方法非常適合涉及尋找下一個較大/較小元素的問題
  • 這個問題展示了如何使用堆疊索引來高效計算距離
  • 時間複雜度在 O(n) 是最佳的,因為每個元素只能被推入和彈出一次
  • 堆疊自然地維持遞減順序,使得找到下一個更暖溫度變得容易

遇到的問題
#

相關文章

LeetCode 150: Evaluate Reverse Polish Notation
·1 分鐘
LeetCode Daily Medium Stack Expression-Evaluation Reverse-Polish-Notation Postfix-Notation Mathematics Algorithm Data-Structure 逆波蘭表示法 堆疊 表達式求值 數學 演算法
使用堆疊解決逆波蘭表示法求值問題
LeetCode 84: Largest Rectangle in Histogram
·1 分鐘
LeetCode Daily Hard Stack Monotonic-Stack Array Histogram Geometry Algorithm Dynamic-Programming 直方圖 堆疊 幾何 演算法
使用單調堆疊解決直方圖中最大矩形面積問題
LeetCode 901: Online Stock Span
·1 分鐘
LeetCode Daily Medium Stack Monotonic-Stack Design Data-Structure Algorithm 股票 堆疊 設計模式
使用單調堆疊解決股票價格跨度問題
LeetCode 20: Valid Parentheses
·1 分鐘
LeetCode Daily Easy Stack String Parentheses Validation Algorithm Data-Structure 括號 堆疊 字串 驗證 演算法
使用堆疊解決有效括號問題
LeetCode 853: Car Fleet
·1 分鐘
LeetCode Daily Medium Stack Sorting Simulation Greedy Array 堆疊 排序 模擬 貪心 陣列
使用堆疊方法解決車隊問題
LeetCode 503: Next Greater Element II(單調棧)
·1 分鐘
LeetCode Daily Medium Monotonic-Stack Stack Array Circular-Array 單調棧 環狀陣列
單調棧、環狀陣列