LeetCode 筆記 - 77. Combinations
針對組合生成問題,本文比較了深度優先搜尋(DFS)與分治法(Divide and Conquer)的效能差異。最終採用分治法策略,透過逐步組合子規模的結果,達成比傳統遞迴更高效的組合生成,優化了大範圍數據下的執行效率。
針對組合生成問題,本文比較了深度優先搜尋(DFS)與分治法(Divide and Conquer)的效能差異。最終採用分治法策略,透過逐步組合子規模的結果,達成比傳統遞迴更高效的組合生成,優化了大範圍數據下的執行效率。
探討訊號在網路拓撲中抵達所有節點的最短時間。本文引導讀者實作經典的 Dijkstra 演算法,透過優先權隊列(Priority Queue)動態更新起點到各節點的最短路徑。這是一篇掌握權重圖最短路徑計算的標準教學。
針對包含重複元素的數列生成全排列。本文分享在遞迴過程中加入判別邏輯的小技巧,透過排序與分支剪枝,有效避免產出重複的組合。這是一篇關於如何優化經典遞迴演算法以應對特殊約束條件的實務心得。
全排列問題的經典解析。本文介紹深度優先搜尋(DFS)與交換元素(SWAP)兩種主流解法,並針對兩者的時間複雜度進行深入對比。這是一篇幫助讀者掌握遞迴思維、理解排列組合生成邏輯以及演算法複雜度評估的技術指南。
計算長度為 n 且按字典序排列的母音組合數量。作者跳出傳統遞迴,運用高中數學的「隔板法」將問題轉化為組合公式。透過 O(1) 的數學運算直接求出解答,展示了數學建模在解決計算問題時的極致效率。
LeetCode 第 7 題解析,要求將一個 32 位元的有號整數進行反轉。本文分享如何透過基礎的數學運算處理位元反轉,並特別提醒開發者注意反轉後可能產生的數值溢位(Overflow)問題,確保結果符合 32 位元整數的範圍限制。
實作 C 語言中的 strstr() 函數,尋找子字串出現的起始索引。本文採取直覺且高效的模擬遍歷方式,在 O(N) 複雜度內完成字串匹配。這是一篇掌握基本字串搜尋邏輯與邊界處理的開發隨筆。
挑戰尋找最長迴文子字串。本文深度解析 Manacher 演算法,透過對稱性質避免重複比較,將搜尋時間從 O(N^2) 優化至線性 O(N)。文中詳述演算法的推導過程與實作細節,是理解進階字串演算法的首選筆記。
在兩個已排序數列中尋找合併後的中位數。本文分享如何透過部分合併的技巧,僅遍歷至中位數所需長度即可得出解答。這種優化策略能有效控制計算量,在維持 O(N) 線性複雜度的同時,提升求取中位數的速度。
尋找最長不重複子字串的長度。本文解析滑動視窗(Sliding Window)配合哈希表(Map)的優化策略。透過記錄字元與其最後出現索引,能動態調整視窗起點,在單次遍歷中精確計算出最大不重複區段,大幅提升效率。