题解 | #矩阵中的路径#

矩阵中的路径

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();
       for(int i = 0; i < matrix.length; i++){
        for(int j = 0; j < matrix[0].length; j++){
            if(traversal(i, j, matrix,words,0)){
                return true;
            }
        }
       }
       return false;
    }
    boolean traversal(int i,int j,char[][] matrix,char[] words,int index){
        //越界及不等
        //index表示的是查找到字符串word的第几个字符,
        //如果这个字符不等于matrix[i][j],说明验证这个坐标路径是走不通的
        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 = traversal(i+1, j, matrix, words, index+1) 
            ||traversal(i-1, j, matrix, words, index+1) 
            ||traversal(i, j+1, matrix, words, index+1) 
            ||traversal(i, j-1, matrix, words, index+1);
        matrix[i][j] = tmp;
        return res;
    }
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务