LeetCode 筆記 - 2300. Successful Pairs of Spells and Potions
分析 LeetCode 2300 題,計算魔法咒語與藥水的成功配對數量。本文結合陣列排序與二元搜尋 (Binary Search) 技術,在 O(n log m) 的複雜度內快速找出符合門檻條件的組合,展示搜尋技術在大規模資料比對中的效力。
分析 LeetCode 2300 題,計算魔法咒語與藥水的成功配對數量。本文結合陣列排序與二元搜尋 (Binary Search) 技術,在 O(n log m) 的複雜度內快速找出符合門檻條件的組合,展示搜尋技術在大規模資料比對中的效力。
挑戰 LeetCode 1488 題,解決城市防洪問題。本文分享如何利用雜湊表追蹤湖泊狀態,並透過有序集合紀錄可排水的晴天日期,探討如何在下雨前精準選擇需要抽乾的湖泊,以避免災難性的洪水發生。
分析 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 思維的必經之路。