題目簡介\nLeetCode 329題“矩陣中的最長遞增路徑”是一道經典的深度優先搜索(DFS)與動態規劃相結合的難題。給定一個 m x n 的整數矩陣,要求找出從任意單元格出發、沿著上下左右四個方向移動(但只能移動到值嚴格更大的相鄰格子)時的最長遞增路徑的長度。這道題的核心挑戰在于矩陣的規模較大時,暴力DFS會因重復計算而超時,因此必須借助記憶化搜索(即緩存已經計算過的結果)來優化時間復雜度。\n\n本文將提供一個Java實現的解決方案,并詳細解釋每個步驟的邏輯。\n\n## 解題思路\n我們要解決的問題是:對于矩陣中的每個單元格(i, j),計算以它為起點所能形成的最長遞增路徑長度。傳統DFS會從每個起點遍歷所有可能路徑,但許多子路徑會被多次重復計算(例如,從不同起點到達同一個單元格后,最優路徑是相同的)。因此,我們可以使用DFS深度優先遍歷并結合一個等大的記憶化數組,一旦某個單元格的計算已完成,就不再遞歸遍歷,直接返回緩存值。\n\n# 算法步驟\n1. 定義單元:設置矩陣的行數 m 和列數 n。記憶化數組 memo[m][n] 初始化為0(表示未計算)。\n2. 全局最大值:遍歷所有坐標(i, j),作為源點啟動DFS,用全局變量 res 保存當前全局最大長度。對于每個起點的遞歸返回長度,更新res的最大值。\n3. 剪枝與邊界檢查:對一個移動方向定義四個方向向量(上下左右)。在進行DFS必須確保newRow >= 0 && newRow < m 和 `newCol >= 0154了邊界。同時依靠\n4. 遞歸終止:一旦遞歸不能再向更大數值移動(超出邊界或停止遞增長度加一 +