题解 | #矩阵中的路径#

矩阵中的路径

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
        //判断二维字符数组是否包含某条路径
        //路径要与字母一一匹配,但不能往回走,
        //可以先找到包含首字母的元素.
        //方法是递归,向外找,某一个阶段不符合,就可以直接返回false,到最后,true
        if(matrix.length == 0){
            return false;
        }
        int index = 0;
        //找到首元素
        for(int i = 0; i < matrix.length; i++){
            for(int j = 0; j < matrix[0].length; j++){
                if(justy(matrix,word,i,j,index)){
                    return true;
                }
            }
        }
        return false;
    }
    public static boolean justy(char[][] matrix, String word, int x, int y, int index){
        //遇到边界值,小于0,或者大于数组长度,或者不符合要求,返回false
        if(x < 0 || y < 0 || x >= matrix.length|| y >= matrix[0].length || matrix[x][y] != word.charAt(index) ){
            return false;
        }
        //可以举一个例子,长度位为1,未返回false,首字母相等,返回true
        if(index == word.length()-1){
            return true;
        }
        char tmp = matrix[x][y];
        matrix[x][y] = '#';
        boolean b =  justy(matrix,word,x-1,y,index+1) || justy(matrix,word,x,y+1,index+1) || justy(matrix,word,x,y-1,index+1) || justy(matrix,word,x+1,y,index+1);
        matrix[x][y] = tmp;
        return b;
    }
}

全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
06-26 15:33
青岛工学院 Java
积极的秋田犬要冲国企:他现在邀请我明天面试
点赞 评论 收藏
分享
牛客266927136号:为啥实习经历写这么少,项目经历反而大写特写,最重要的还是实习经历吧,写具体点,什么场景下做了什么事,解决了什么问题,优化了什么场景,性能提升了多少多少
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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