1 题目
2 解析
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 递增路径的最大长度
* @param matrix int整型二维数组 描述矩阵的每个数
* @return int整型
*/
int maxLen = 0;
public int solve (int[][] matrix) {
// write code here
for(int i = 0; i < matrix.length; i++){
for(int j = 0; j < matrix[0].length; j++){
// 初始tep要给-1,保证每一个数组元素都比它大
dfs(matrix, i, j, -1, 0);
}
}
return maxLen;
}
public void dfs(int[][] matrix, int row, int col, int tep, int len){
// 结束条件为位置越界或者当前值小于上一个值
if(row >= matrix.length || row < 0 || col < 0 || col >= matrix[0].length
|| matrix[row][col] <= tep){
maxLen = Math.max(maxLen, len);
return;
}
tep = matrix[row][col];
dfs(matrix, row - 1, col, tep, len + 1);
dfs(matrix, row + 1, col, tep, len + 1);
dfs(matrix, row, col - 1, tep, len + 1);
dfs(matrix, row, col + 1, tep, len + 1);
}
}
利用tep保存当前元素值并传到下层函数中继续进行判断.