题解 | #矩阵中的路径#

矩阵中的路径

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

思路:dfs遍历,i,j控制matrix遍历坐标,idx控制word遍历坐标,idx到达word末尾,成功,越界或matrix上字符与word当前判断字符不同,失败

注意:

1、idx的增加,无论是在当前过程,还是递归中,均要在判断idx遍历结束和字符不匹配之后进行

2、为了防止遍历过程中回头,需要遮挡,并在递归结束后恢复

3、多word与matrix当前字符相同,idx到达n-1,成功

class Solution:
    def hasPath(self , matrix: List[List[str]], word: str) -> bool:
        # write code here
        if len(matrix) == 0 or len(matrix[0]) == 0:
            return False
        
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == word[0] and self.dfs(matrix, i, j, word, 0):
                    return True
        return False

    def dfs(self, matrix, i, j, word, idx):
        if i < 0 or i >= len(matrix) or j < 0 or j >= len(matrix[0]):
            return False
        
        if matrix[i][j] != word[idx]:
            return False
        
        if idx == len(word)-1:
            return True
        
        tmp = matrix[i][j]
        matrix[i][j] = '#'
        
        if self.dfs(matrix, i+1, j, word, idx+1) or \
        self.dfs(matrix, i-1, j, word, idx+1) or \
        self.dfs(matrix, i, j+1, word, idx+1) or \
        self.dfs(matrix, i, j-1, word, idx+1):
            return True
        matrix[i][j] = tmp
        
        return False
        
        
        
全部评论

相关推荐

有没有友友知道hr面会问什么我应该反问什么?还有如何防止hr套话啊?还有应该如果催hr推进快一点#字节#OPPO#hr面
牛客989988346号:职业规划,优缺点,为什么选择这个岗,对应聘公司产品的了解和满意度,如果让你改进公司产品你会怎么做,对ai(新技术)的了解,有无其他offer,什么时候能到岗
投递OPPO等公司7个岗位 >
点赞 评论 收藏
分享
04-25 18:13
五邑大学 Java
后来123321:大二两段实习太厉害了,我现在大二连面试都没有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务