题解 | #矩阵中的路径#
矩阵中的路径
https://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix char字符型二维数组
* @param word string字符串
* @return bool布尔型
*/
public boolean hasPath (char[][] matrix, String word) {
// write code here
char [] words= word.toCharArray();
int [][] pos={{0,1},{0,-1},{1,0},{-1,0}};
for (int i=0;i<matrix.length;i++){
for (int j=0;j<matrix[0].length;j++){
if(dfs(matrix,words,i,j,0))
return true;
}
}
return false;
}
boolean dfs(char[][] matrix,char[] words , int i, int j ,int index){
if(i>=matrix.length || i<0|| j>=matrix[0].length||j<0||matrix[i][j]!=words[index]){
return false;
}
if(index==words.length-1) return true;
char tmp=matrix[i][j];
matrix[i][j]='.';
boolean res=dfs(matrix,words,i+1,j,index+1) ||
dfs(matrix,words,i-1,j,index+1) ||
dfs(matrix,words,i,j+1,index+1) ||
dfs(matrix,words,i,j-1,index+1);
matrix[i][j]=tmp;
return res;
}
}
返回类型 dfs(参数列表 ){
if(边界条件){
return false;
}
结束条件
if(index==words.length-1) return true;
递归调用 返回
boolean res=dfs(matrix,words,i+1,j,index+1) ||
dfs(matrix,words,i-1,j,index+1) ||
dfs(matrix,words,i,j+1,index+1) ||
dfs(matrix,words,i,j-1,index+1);
return res;
}
#dfs#
360集团公司福利 395人发布
查看22道真题和解析