美文网首页
矩阵中的路径

矩阵中的路径

作者: 曾大稳丶 | 来源:发表于2022-05-31 11:23 被阅读0次

    题目链接:https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/

    image.png
    image.png

    题目解析
    本题采用暴力解析,采用遍历的方式, 从 (i,j)位置开始进行对比第一个字符,如果当前位置满足,在继续邻边匹配下一个字符,直到匹配到最后一个字符。需要注意的是需要标记一下之前的匹配位置,不然造成重复匹配。
    专业术语: 深度优先搜索(DFS)+ 剪枝

    public boolean exist(char[][] board, String word) {
        char [] words = word.toCharArray();
        for (int i = 0; i < board.length; i++) {
            for (int j = 0; j < board[0].length; j++) {
                if (dfs(board,words,i,j,0)){
                    return true;
                }
            }
        }
        return false;
    }
    private boolean dfs(char[][] board, char[] word,int i,int j,int k){
        if (i >= board.length || i<0 || j>=board[0].length || j<0 || word[k]!=board[i][j]){
            return false;
        }
        if (k == word.length-1) return true;
        board[i][j] = '\0';
        boolean res = dfs(board,word,i+1,j,k+1) || dfs(board,word,i-1,j,k+1)
                || dfs(board,word,i,j+1,k+1) || dfs(board,word,i,j-1,k+1);
        board[i][j] = word[k];
        return res;
    }
    
    

    复杂度分析
    M,N 分别为矩阵行列大小, K 为字符串 word 长度。
    空间复杂度: O(K):递归最大深度为 K。
    时间复杂度: O(3kMN):MN是 board 的遍历次数,3k是每一次遍历有 3 种可能,需要遍历K次。

    相关文章

      网友评论

          本文标题:矩阵中的路径

          本文链接:https://www.haomeiwen.com/subject/gylzprtx.html