描述
给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。
对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。
分析
使用记忆存储+深度搜索的策略去解决。
- 遍历每个结点做深度搜索,求出以当前结点为起点的最长递增路径长度。为了便面重复计算,使用数组记录已经深度搜索过的结点。
- 深搜过程中不用考虑标记已经遍历过的结点,因为只向数值更大的方向前进,所以不会出现来回遍历的情况。
class Solution {
int[][] memo;
public int longestIncreasingPath(int[][] matrix) {
int m = matrix.length;
if(m == 0){
return 0;
}
int n = matrix[0].length;
memo = new int[m][n];
int ans = 0;
for(int i