首页 > 其他 > 详细

65、矩阵中的路径

时间:2020-08-21 17:37:56      阅读:62      评论:0      收藏:0      [点我收藏+]

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        def isValid(i, j):
            return 0 <= i < m and 0 <= j < n

        def dfs(i, j, visited):
            if len(visited) >= len(word):
                return True
            for dx, dy in delt:
                x, y = i + dx, j + dy
                if isValid(x, y) and (x, y) not in visited and word[len(visited)] == board[x][y]:
                    visited.add((x, y))
                    if dfs(x, y, visited):
                        return True
                    visited.remove((x, y))
            return False
                
        m, n = len(board), len(board[0])
        delt = [[0, 1], [0, -1], [1, 0], [-1, 0]]
        for i in range(m):
            for j in range(n):
                visited = set()
                if board[i][j] == word[0]:
                    visited.add((i, j))
                    if dfs(i, j, visited):
                        return True
        return False
                

 

65、矩阵中的路径

原文:https://www.cnblogs.com/liushoudong/p/13541725.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!