CodingMan.cc

Code Your True Nature

解析如何從數列中找出相加等於目標值的所有不重複組合,且數字可無限重複使用。本文教學使用深度優先搜尋(DFS)配合排序優化,透過剪枝技術跳過無效的分支,達成在廣大搜尋空間中精確搜集目標組合的目的。

如何在無序數列中找到第 k 大的元素?本文分析了局部選擇與全局排序的效能差異。在大規模數據下,適當的排序配合索引存取往往比多次選擇更具優勢。這是一篇關於演算法選擇與數據規模權衡的實務討論。

要在建築間移動,如何最有效分配有限的磚塊與梯子?本文分享利用優先權隊列(Priority Queue/Heap)「改變過去」的策略:先將梯子用在每一次爬升,當梯子耗盡時再從堆積中找最小爬升高度換回磚塊。這是一篇關於貪婪演算法與堆積運用的優質筆記。

探討如何針對單字清單建立最短的合法編碼。本文解析規則中字串包含的特性,分享先進行長度排序再依序比對後綴的優化策略。透過這套方案,能精確判斷哪些單字可被壓縮在其他單字中,達成節省存儲空間的編碼目標。

經典的棋盤路徑計數問題。本文利用動態規劃(DP)的核心思想,透過逐格加總左方與上方的走法數量,精確計算出從左上角抵達右下角的所有可能路徑。這是一篇適合掌握遞推關係式建立與基礎矩陣運算的演算法筆記。

挑戰找出將兩個字串刪減至完全相同所需的最少步數。本文將問題轉化為尋找「最長共同子序列」(LCS),並揭露總長度扣除兩倍 LCS 即為最小刪除次數的規律。透過結合動態規劃概念,能高效解決字串比對與編輯距離相關問題。

解析經典的「最長共同子序列」問題。本文針對兩個字串的 LCS 運算,探討其在動態規劃中的實作邏輯。作為一個 NP-Hard 問題的簡化版,這是一篇理解字串比對、版本控制(如 git diff 原理)背後演算法思維的重要參考。

要求在數字三角形中尋找相加總和最小的路徑。解題思路結合了深度優先搜尋(DFS)與動態規劃(DP),透過記錄已探索過的子路徑結果來避免重複計算。本文分享如何透過記憶化搜索,將複雜路徑搜尋優化為高效的遞推過程。

挑戰尋找不含重複元素且總和最大的子數列。本文結合滑動視窗(Sliding Window)與哈希表(Hash Map)來動態調整搜尋範圍,並配合前綴和技術加速區間加總。這是一篇展示如何組合多種經典技巧來解決複合型問題的開發筆記。

尋找從兩端移除元素使總和等於 x 的最小步驟。本文分享一個逆向思考的小技巧:將問題轉化為尋找總和為「總數 - x」的最長連續子陣列。結合前綴和與雙指針技術,能讓這個看似複雜的兩端搜尋問題變得易於實作。

0%