LeetCode 筆記 - 509. Fibonacci Number
LeetCode 費氏數列計算解析。本文展示如何利用動態規劃(DP)與查表法(Memoization)來儲存中間計算結果,避免傳統遞迴導致的重複運算與效能浪費。這是一篇理解遞迴優化與動態規劃入門的最佳實踐筆記。
LeetCode 費氏數列計算解析。本文展示如何利用動態規劃(DP)與查表法(Memoization)來儲存中間計算結果,避免傳統遞迴導致的重複運算與效能浪費。這是一篇理解遞迴優化與動態規劃入門的最佳實踐筆記。
針對判定兩棵二元樹是否完全相同的 LeetCode 題目進行解析。本文採用同步遞迴走訪兩棵樹的策略,逐一比對每個節點的值與結構。這是一篇幫助讀者掌握樹走訪(Tree Traversal)與基礎遞迴判別邏輯的入門教學。
尋找矩陣中從左上到右下的最小路徑成本。這是一個純粹且經典的動態規劃(DP)問題。本文引導讀者建立路徑成本矩陣,透過逐一選取上方或左方較小的路徑值進行累加,最終在 O(M * N) 時間內得出全域最優解。
挑战在無序數列中尋找最長連續子序列,且要求在 O(N) 線性時間內完成。本文分享透過哈希集合快速定位連續區間起點與延伸方向的技巧,是一篇探討如何繞過傳統排序限制、利用空間換取查詢效率的高階演算法心得。
挑戰在不轉換為列表的情況下對鏈結串列進行向右旋轉。本文教學如何精確操作指針,透過斷開特定節點並將原尾端重新連接至頭部,達成 O(1) 額外空間的結構變更。這是一篇掌握鏈結串列結構變更細節與循環連接技巧的實務筆記。
解析 LeetCode 困難題「分發糖果」。解題邏輯聚焦於將複雜的山形分佈拆解為左、右兩個獨立的山坡進行計算,最後取兩者最大值。本文展示如何將看似棘手的全局最優化問題分解為局部的線性掃描,達成優美且高效的解決方案。
跳跳遊戲系列第二題,尋找抵達終點的最小步數。本文解析如何運用動態規劃(DP)紀錄每個位置的最短步數,透過局部覆蓋範圍的持續更新,在 O(N) 或 O(N^2) 複雜度下收斂出最優路徑,是理解路徑優化問題的經典範例。
解析如何尋找最長的波動序列。本文分享三種不同的解題軌跡,探討如何動態追蹤數列的一上一下長度變化。核心概念在於靈活處理可跳過的元素,讓讀者能從不同複雜度的實作中掌握波動序列計數的精髓。
跳跳遊戲系列首題,判定是否能抵達數列終點。本文警告讀者避免落入動態規劃的複雜度陷阱,改採只需紀錄「最遠可抵達位置」的貪婪思維。這種線性掃描法能以極高的效率完成判定,是學習貪婪策略與範圍判斷的優質案例。
要求找出二元樹中每一層的最大值。本文運用廣度優先搜尋(BFS)走訪每一層節點,並在每層迭代中紀錄下最高數值。這展示了層序遍歷在處理樹狀結構層次屬性統計時的直覺應用。