LeetCode 筆記 - 62. Unique Paths
經典的棋盤路徑計數問題。本文利用動態規劃(DP)的核心思想,透過逐格加總左方與上方的走法數量,精確計算出從左上角抵達右下角的所有可能路徑。這是一篇適合掌握遞推關係式建立與基礎矩陣運算的演算法筆記。
經典的棋盤路徑計數問題。本文利用動態規劃(DP)的核心思想,透過逐格加總左方與上方的走法數量,精確計算出從左上角抵達右下角的所有可能路徑。這是一篇適合掌握遞推關係式建立與基礎矩陣運算的演算法筆記。
挑戰找出將兩個字串刪減至完全相同所需的最少步數。本文將問題轉化為尋找「最長共同子序列」(LCS),並揭露總長度扣除兩倍 LCS 即為最小刪除次數的規律。透過結合動態規劃概念,能高效解決字串比對與編輯距離相關問題。
解析經典的「最長共同子序列」問題。本文針對兩個字串的 LCS 運算,探討其在動態規劃中的實作邏輯。作為一個 NP-Hard 問題的簡化版,這是一篇理解字串比對、版本控制(如 git diff 原理)背後演算法思維的重要參考。
要求在數字三角形中尋找相加總和最小的路徑。解題思路結合了深度優先搜尋(DFS)與動態規劃(DP),透過記錄已探索過的子路徑結果來避免重複計算。本文分享如何透過記憶化搜索,將複雜路徑搜尋優化為高效的遞推過程。
挑戰尋找不含重複元素且總和最大的子數列。本文結合滑動視窗(Sliding Window)與哈希表(Hash Map)來動態調整搜尋範圍,並配合前綴和技術加速區間加總。這是一篇展示如何組合多種經典技巧來解決複合型問題的開發筆記。
尋找從兩端移除元素使總和等於 x 的最小步驟。本文分享一個逆向思考的小技巧:將問題轉化為尋找總和為「總數 - x」的最長連續子陣列。結合前綴和與雙指針技術,能讓這個看似複雜的兩端搜尋問題變得易於實作。
挑戰清空僅包含 a 與 b 的字串。由於移除規則允許一次刪除所有符合條件的「迴文子序列」,本文揭露了一個驚人的簡化邏輯:若原字串非迴文,最多只需兩步(先刪除所有 a,再刪除所有 b)即可清空。這是一篇強調審題與邏輯簡化重要性的筆記。
在 Python 開發中,遞迴列出目錄及子目錄下的所有檔案是常見需求。本文分享如何使用內建的 glob 模組,透過簡潔的通配符語法快速取得完整檔案清單。這是一篇掌握檔案系統操作與目錄遍歷技巧的實用技術隨筆。
挑戰尋找兩個鏈結串列的交會點。本文特別介紹神奇的「龜兔賽跑演算法」(Floyd Cycle Detection Algorithm),展示如何透過精巧的指標移動邏輯,在不需要額外空間的情況下,偵測出結構中的環或交會節點,是一篇探討指針美學的深度心得。
分享如何在 Mac 系統中使用程式碼觸發系統通知(System Notification)。對於需要執行長時間程序的使用者,本文提供一套自動化提醒方案,讓程式在任務結束後主動通知開發者,有效節省等待時間並提升工作流程效率。