剑指 Offer 第12题:矩阵中的路径

1、前言

题目描述

2、思路

DFS 思路,只要有一个成功就是成功。

3、代码

class Solution {
    public boolean exist(char[][] board, String word) {
        if(board == null || board.length == 0 || word == null || word.length() == 0){
            return false;
        }
        int m = board.length, n = board[0].length;
        boolean[][] visited = new boolean[m][n];
        for(int i = 0; i < m; i++){
            for(int j = 0; j < n; j++){
                if(board[i][j] == word.charAt(0) && dfs(board, i, j, word, 0, visited)){
                    return true;
                }
            }
        }
        return false;
    }

    private boolean dfs(char[][] board, int i, int j, String word, int index, boolean[][] visited) {
        if(i < 0 || i >= board.length || j < 0 || j >= board[0].length || visited[i][j] || index == word.length() || word.charAt(index) != board[i][j]){
            return false;
        }

        if(index == word.length() - 1){
            return true;
        }

        visited[i][j] = true;
        if(dfs(board, i - 1, j, word, index + 1, visited) || dfs(board, i + 1, j, word, index + 1, visited)
                || dfs(board, i, j - 1, word, index + 1, visited) || dfs(board, i, j + 1, word, index + 1, visited)){
            return true;
        }
        visited[i][j] = false;

        return false;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容