参考Lc上大神的思路 多了个转换成二维矩阵的步骤 13ms 9728K
https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof/solution/mian-shi-ti-12-ju-zhen-zhong-de-lu-jing-shen-du-yo/
public class Solution {
public boolean hasPath(char[] matrix, int rows, int cols, char[] str){
char[][] array = new char[rows][cols];
for (int i = 0; i < rows ; i++) {
for(int j = 0; j < cols; j++) {
array[i][j] = matrix[i*cols + j];
}
}
for(int i = 0; i < array.length; i++){
for(int j = 0; j< array[0].length; j++){
if(dfs(array, str, i, j, 0)) return true;
}
}
return false;
}
public boolean dfs(char[][] array,char [] str, int i,int j,int k){
if(i >= array.length || i < 0 || j >= array[0].length || j < 0 || array[i][j] != str[k] ){
return false;
}
if(k == str.length - 1)return true;
char temp = array[i][j];
array[i][j] = '/';
boolean res = dfs(array,str,i + 1, j, k + 1) || dfs(array,str,i - 1, j, k + 1)
||dfs(array,str,i, j + 1, k + 1) ||dfs(array,str,i, j - 1, k + 1);
array[i][j]= temp;
return res;
}
}
京公网安备 11010502036488号