矩阵最长递增路径
解题思路
- 深度优先搜索,由于序列递增,因此无需回溯
实现代码
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 递增路径的最大长度
* @param matrix int整型二维数组 描述矩阵的每个数
* @return int整型
*/
private int res = Integer.MIN_VALUE;
public int solve (int[][] matrix) {
// write code here
if(matrix == null || matrix.length == 0){
return 0;
}
int m = matrix.length;
int n = matrix[0].length;
int[][] dirs = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j ++){
dfs(matrix, m, n, i, j, 1, dirs);
}
}
return res;
}
public void dfs(int[][] matrix, int m, int n, int x, int y, int length, int[][] dirs){
int cur = matrix[x][y];
for(int i = 0; i < 4; i++){
int newX = x + dirs[i][0];
int newY = y + dirs[i][1];
if(newX >= 0 && newX < m && newY >= 0 && newY < n && cur < matrix[newX][newY]){
dfs(matrix, m, n, newX, newY, length + 1, dirs);
}
}
res = Math.max(res, length);
}
}