LeetCode 筆記 - 92. Reverse Linked List II
要求反轉鏈結串列中指定範圍內的節點。本文分享利用列表輔助處理的簡化策略,雖然在空間複雜度上有權衡,但極大地降低了指針操作的複雜度與出錯率。這是一篇針對鏈結串列局部重組問題的實務開發隨筆。
要求反轉鏈結串列中指定範圍內的節點。本文分享利用列表輔助處理的簡化策略,雖然在空間複雜度上有權衡,但極大地降低了指針操作的複雜度與出錯率。這是一篇針對鏈結串列局部重組問題的實務開發隨筆。
延續粉刷房子的概念,本題將顏色種類擴展至 k 種。解題思維同樣基於動態規劃,但需要處理更廣泛的顏色選擇範圍。本文解析如何在增加顏色靈活度的同時,依然保持演算法的執行效率,是進階動態規劃應用的優質練習。
解析 LeetCode 經典題「粉刷房子」。本文探討如何在顏色不相鄰的限制下,運用動態規劃(DP)找出粉刷所有房子的最低成本。透過建立狀態轉移方程,逐層累加當前顏色的最優解,是理解 DP 處理相鄰約束問題的入門首選。
LeetCode 費氏數列計算解析。本文展示如何利用動態規劃(DP)與查表法(Memoization)來儲存中間計算結果,避免傳統遞迴導致的重複運算與效能浪費。這是一篇理解遞迴優化與動態規劃入門的最佳實踐筆記。
針對判定兩棵二元樹是否完全相同的 LeetCode 題目進行解析。本文採用同步遞迴走訪兩棵樹的策略,逐一比對每個節點的值與結構。這是一篇幫助讀者掌握樹走訪(Tree Traversal)與基礎遞迴判別邏輯的入門教學。
尋找矩陣中從左上到右下的最小路徑成本。這是一個純粹且經典的動態規劃(DP)問題。本文引導讀者建立路徑成本矩陣,透過逐一選取上方或左方較小的路徑值進行累加,最終在 O(M * N) 時間內得出全域最優解。
挑战在無序數列中尋找最長連續子序列,且要求在 O(N) 線性時間內完成。本文分享透過哈希集合快速定位連續區間起點與延伸方向的技巧,是一篇探討如何繞過傳統排序限制、利用空間換取查詢效率的高階演算法心得。
挑戰在不轉換為列表的情況下對鏈結串列進行向右旋轉。本文教學如何精確操作指針,透過斷開特定節點並將原尾端重新連接至頭部,達成 O(1) 額外空間的結構變更。這是一篇掌握鏈結串列結構變更細節與循環連接技巧的實務筆記。
解析 LeetCode 困難題「分發糖果」。解題邏輯聚焦於將複雜的山形分佈拆解為左、右兩個獨立的山坡進行計算,最後取兩者最大值。本文展示如何將看似棘手的全局最優化問題分解為局部的線性掃描,達成優美且高效的解決方案。
跳跳遊戲系列第二題,尋找抵達終點的最小步數。本文解析如何運用動態規劃(DP)紀錄每個位置的最短步數,透過局部覆蓋範圍的持續更新,在 O(N) 或 O(N^2) 複雜度下收斂出最優路徑,是理解路徑優化問題的經典範例。