题解 | #矩阵中的路径#

矩阵中的路径

http://www.nowcoder.com/practice/2a49359695a544b8939c77358d29b7e6

import java.util.*;


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

    public boolean dfs(char[][] board, String word, boolean[][] visited, int k, int x, int y) {
        if (k == word.length()) {
            return true;
        }
        if (x + 1 < board.length && (!visited[x + 1][y]) && word.charAt(k) == board[x + 1][y]) {
            visited[x + 1][y] = true;
            if (dfs(board, word, visited, k + 1, x + 1, y)) {
                visited[x + 1][y] = false;
                return true;
            }
            visited[x + 1][y] = false;
        }
        if (x - 1 > -1 && (!visited[x - 1][y]) && word.charAt(k) == board[x - 1][y]) {
            visited[x - 1][y] = true;
            if (dfs(board, word, visited, k + 1, x - 1, y)) {
                visited[x - 1][y] = false;
                return true;
            }
            visited[x - 1][y] = false;
        }
        if (y + 1 < board[0].length && (!visited[x][y + 1]) && word.charAt(k) == board[x][y + 1]) {
            visited[x][y + 1] = true;
            if (dfs(board, word, visited, k + 1, x, y + 1)) {
                visited[x][y + 1] = false;
                return true;
            }
            visited[x][y + 1] = false;
        }
        if (y - 1 > -1 && (!visited[x][y - 1]) && word.charAt(k) == board[x][y - 1]) {
            visited[x][y - 1] = true;
            if (dfs(board, word, visited, k + 1, x, y - 1)) {
                visited[x][y - 1] = false;
                return true;
            }
            visited[x][y - 1] = false;
        }
        return false;
    }
}



全部评论

相关推荐

02-09 13:09
长安大学 Java
黑皮白袜臭脚体育生:简历条例统一按使用了什么技术实现了什么功能解决了什么问题或提升了什么性能指标来写 可以看看我帖子简历写法
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务