剑指offer系列-面试题-12 - 矩阵中的路径(python)

mac2026-09-24  10

文章目录

1. 题目2. 解题思路3. 代码实现3.1 DFS 4. 总结5. 参考文献

1. 题目

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

2. 解题思路

详情见 leetcode 面试题12. 矩阵中的路径(深度优先搜索 DFS ,清晰图解)

3. 代码实现

3.1 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

4. 总结

so hard

5. 参考文献

[1] 剑指offer丛书 [2] 剑指Offer——名企面试官精讲典型编程题

最新回复(0)