LeetCode 筆記 - 1647. Minimum Deletions to Make Character Frequencies
要求透過最少刪除次數,讓字串中每個字母的出現頻率各不相同。解題思路聚焦於統計頻率後,動態降低重複出現的頻率值,直到找到唯一的空位。這是一篇關於資料統計、集合過濾與動態調整邏輯的實戰分享。
要求透過最少刪除次數,讓字串中每個字母的出現頻率各不相同。解題思路聚焦於統計頻率後,動態降低重複出現的頻率值,直到找到唯一的空位。這是一篇關於資料統計、集合過濾與動態調整邏輯的實戰分享。
延續課程安排問題,本題要求給出一組可行的修課順序。解法核心同樣基於 DFS 進行環偵測,並利用遞迴結束的順序來搜集節點。這是一篇深入探討拓撲排序原理的筆記,教導開發者如何在解決依賴關係問題的同時建立正確的處理順序。
在選修課程與先修限制中判斷是否有衝突。這題本質上是圖論中的「環偵測」問題。本文分享如何運用深度優先搜尋(DFS)遍歷節點,並透過路徑標記來識別是否存在循環依賴(Cycle),是學習拓撲排序與圖形走訪的重要基礎。
給定數列求相加等於目標值的組合數量。由於數字可重複且順序不同視為不同組合,本文捨棄遞迴搜尋,改用效率更高的動態規劃(DP)策略。透過逐層累加子問題的解答,能在可接受的時間內精確算出龐大的組合總數。
挑戰從數字 1 到 9 中找出特定長度且總和等於目標值的組合。本文利用深度優先搜尋(DFS)進行窮舉,透過遞迴探索與邊界剪枝,能高效地找出所有符合限制的數字組合。這是一篇掌握回溯(Backtracking)技巧的進階練習。
針對包含重複元素的 Combination Sum II 問題,本文分享如何運用深度優先搜尋(DFS)找出相加等於目標值的所有組合。重點解析了透過排序與條件判斷來避免產出重複結果的關鍵技巧,幫助讀者在處理回溯演算法時掌握更精細的剪枝策略。
解析如何從數列中找出相加等於目標值的所有不重複組合,且數字可無限重複使用。本文教學使用深度優先搜尋(DFS)配合排序優化,透過剪枝技術跳過無效的分支,達成在廣大搜尋空間中精確搜集目標組合的目的。
如何在無序數列中找到第 k 大的元素?本文分析了局部選擇與全局排序的效能差異。在大規模數據下,適當的排序配合索引存取往往比多次選擇更具優勢。這是一篇關於演算法選擇與數據規模權衡的實務討論。
要在建築間移動,如何最有效分配有限的磚塊與梯子?本文分享利用優先權隊列(Priority Queue/Heap)「改變過去」的策略:先將梯子用在每一次爬升,當梯子耗盡時再從堆積中找最小爬升高度換回磚塊。這是一篇關於貪婪演算法與堆積運用的優質筆記。
探討如何針對單字清單建立最短的合法編碼。本文解析規則中字串包含的特性,分享先進行長度排序再依序比對後綴的優化策略。透過這套方案,能精確判斷哪些單字可被壓縮在其他單字中,達成節省存儲空間的編碼目標。