LeetCode 筆記 - 494. Target Sum
分析 LeetCode 494 題,找出達成目標總和的正負號組合方式。本文探討如何將問題轉化為子集合總和問題 (Subset Sum),並利用動態規劃 (DP) 空間優化技巧,有效率地計算出所有可能的組合數量。
分析 LeetCode 494 題,找出達成目標總和的正負號組合方式。本文探討如何將問題轉化為子集合總和問題 (Subset Sum),並利用動態規劃 (DP) 空間優化技巧,有效率地計算出所有可能的組合數量。
分析 LeetCode 3481 題:套用字串替換規則。本文介紹如何建立相依圖以處理不重疊的替換規則,並透過遞迴方式處理帶有佔位符的字串替換邏輯,優化搜尋效率以達成快速的文字處理。
挑戰 LeetCode 778 題,在水位上升的網格中尋找最短過河路徑。本文結合 Dijkstra 演算法與優先權佇列 (Priority Queue),動態計算到達目標位置所需的最小等待時間,分析路徑搜尋中的貪心策略。
解析在 0/1 矩陣中尋找最大全 1 矩形的面積。本文展示如何將二維問題轉化為多個一維的「直方圖最大矩形」問題,透過動態更新高度陣列並重複套用單調堆疊演算法,達成高效的空間與時間運算。
解析 LeetCode 買賣股票系列問題之二。本文分析在不限制交易次數的情境下,如何利用貪婪演算法 (Greedy) 捕捉所有上升趨勢來最大化利潤,並提供時間複雜度 O(n) 的極簡實作思路。
詳解在直方圖中尋找最大矩形面積的經典演算法。本文介紹如何利用單調堆疊 (Monotonic Stack) 在 O(n) 時間內找出每個柱子左右兩側的第一個較矮柱子,進而計算出以該柱子為高度的最大矩形。
解析經典的「荷蘭國旗問題」(Dutch National Flag Problem)。本文介紹如何在不使用內建排序的情況下,利用三個指標在一次遍歷中完成 0、1、2 的原地排序,達成最優的 O(n) 時間複雜度。
分析 LeetCode 經典困難題「正規表達式匹配」。本文探討如何處理特殊的句點與星號字元,利用動態規劃 (Dynamic Programming) 逐步構建匹配矩陣,解決字串間複雜的模式比對邏輯,是訓練 DP 思維的必經之路。
解析 LeetCode 3468 題,計算符合特定邊界條件的「複製陣列」數量。本文探討如何透過差分性質將問題轉化為區間交集運算,並利用動態更新的上下界在 O(n) 時間內求得所有可能的陣列組合數。
詳解 LeetCode 31 題:尋找字典序中的下一個排列方式。本文拆解演算法的三大步驟:從後方尋找遞減點、尋找替換數值並進行反轉,幫助讀者理解如何在 O(n) 的時間與 O(1) 的空間內完成排列切換。