• 剑指 Offer 12. 矩阵中的路径


    描述

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。
    [["a","b","c","e"],
      ["s","f","c","s"],
      ["a","d","e","e"]]
    但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。

    tags: dfs

    思路

    DFS:遍历

    • 注意已用过的不能在用,所以需要用#填充
    class Solution:
        def exist(self, board: List[List[str]], word: str) -> bool:
            def dfs(i, j, k):
                if not 0 <= i < len(board) or not 0 <= j < len(board[0]) or board[i][j] != word[k]: return False
                if k == len(word) - 1: return True
                tmp, board[i][j] = board[i][j], '#'
                res = dfs(i + 1, j, k + 1) or dfs(i - 1, j, k + 1) or dfs(i, j + 1, k + 1) or dfs(i, j - 1, k + 1)
                board[i][j] = tmp
                return res
    
            for i in range(len(board)):
                for j in range(len(board[0])):
                    if dfs(i, j, 0): 
                      return True
            return False
    
  • 相关阅读:
    正则表达式
    JS逻辑算法
    js函数
    JS运算符的应用
    JS课堂笔记
    json模块学习
    什么是面向对象,以及如何定义对象,实例化对象
    什么是面向过程,以及代码展示
    什么是元类,以及用type类来产生类.
    python下载安装
  • 原文地址:https://www.cnblogs.com/fengcnblogs/p/13509857.html
Copyright © 2020-2023  润新知