329題 矩陣中的最長遞增路徑

2022-08-14 16:15:14 字數 995 閱讀 7875

給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。 你不能在對角線方向上移動或移動到邊界外(即不允許環繞)。

示例1:

示例2:

很顯然只能將所有情況完全遍歷一次,將以任意一點為起點的情況全部遍歷完,也就是對每個點進行深度優先搜尋。但是這樣的時間複雜度直接**。所以我們需要考慮如何優化。很顯然我們這裡有很多的重複情況,我們就建立一張快取表來放置以前計算出來的值。

package solution;

/** * @author xgj

*/public class solution , , , };

private int rows, columns;

public int longestincreasingpath(int matrix)

this.rows = matrix.length;

this.columns = matrix[0].length;

int memo = new int[this.rows][this.columns];

int ans = 0;

for (int i = 0; i < this.rows; ++i)

}return ans;

}public int dfs(int matrix, int row, int column, int memo)

//該位置以自己為起點,以自己為終點可以構成乙個長度為一的陣列。

++memo[row][column];

for (int dir : dirs)

}return memo[row][column];}}

329 矩陣中的最長遞增路徑

給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 示例 1 輸入 nums 9,9,4 6,6,8 2,1,1 輸出 4 解釋 最長遞增路徑為 1,2,6,9 示例 2 輸入 nums 3,4,5 3,...

329 矩陣中的最長遞增路徑

給定乙個整數矩陣,找出最長遞增路徑的長度。對於每個單元格,你可以往上,下,左,右四個方向移動。你不能在對角線方向上移動或移動到邊界外 即不允許環繞 示例 1 輸入 nums 9,9,4 6,6,8 2,1,1 輸出 4 解釋 最長遞增路徑為 1,2,6,9 dfs 記憶矩陣 儲存以該點位起點的最長路...

329 矩陣中的最長遞增路徑

題目 型別 深搜 記憶化遞迴 難度 困難 題意 從乙個二維矩陣中找到乙個嚴格遞增的路徑。使用深度搜尋,不需要標記,因為到當前點是需要滿足比原來點數值大的,所以也不會重複遍歷。然後使用記憶化遞迴記錄最長的路徑,如果已經計算過了直接返回。備註 2020.4.18位元組跳動三面面試題。面試官提示我使用回溯...