import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* 递增路径的最大长度
* @param matrix int整型二维数组 描述矩阵的每个数
* @return int整型
*/
int col;
int row;
int maxLen;
Set sets = new HashSet<>();
public int solve (int[][] matrix) {
this.row=matrix.length;
this.col=matrix[0].length;
for(int i=0;i
for(int j=0;j
sets = new HashSet<>();
maxLen = Math.max(1,maxLen);
sets.add(i+"-"+j);
if(i+1
dfs(matrix,i+1,j,2);
}
if(i-1>=0&&matrix[i][j]
dfs(matrix,i-1,j,2);
}
if(j+1
dfs(matrix,i,j+1,2);
}
if(j-1>=0&&matrix[i][j]
dfs(matrix,i,j-1,2);
}
sets.remove(i+"-"+j);
}
}
return maxLen;
}
public void dfs(int[][] matrix, int i, int j, int len){
if(i<0||i>=row||j<0||j>=col||sets.contains(i+"-"+j)){
return;
}
maxLen = Math.max(len,maxLen);
sets.add(i+"-"+j);
if(i+1
dfs(matrix,i+1,j,len+1);
}
if(i-1>=0&&matrix[i][j]
dfs(matrix,i-1,j,len+1);
}
if(j+1
dfs(matrix,i,j+1,len+1);
}
if(j-1>=0&&matrix[i][j]
dfs(matrix,i,j-1,len+1);
}
sets.remove(i+"-"+j);
}
}
发表于 2021-02-21 08:16:44
回复(0)