Python描述 LeetCode 79. 单词搜索

Posted 亓官劼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python描述 LeetCode 79. 单词搜索相关的知识,希望对你有一定的参考价值。

Python描述 LeetCode 79. 单词搜索

  大家好,我是亓官劼(qí guān jié ),在【亓官劼】公众号、CSDN、GitHub、B站等平台分享一些技术博文,主要包括前端开发、python后端开发、小程序开发、数据结构与算法、docker、Linux常用运维、NLP等相关技术博文,时光荏苒,未来可期,加油~

  如果喜欢博主的文章可以关注博主的个人公众号【亓官劼】(qí guān jié),里面的文章更全更新更快。如果有需要找博主的话可以在公众号后台留言,我会尽快回复消息.


本文原创为【亓官劼】(qí guān jié ),请大家支持原创,部分平台一直在恶意盗取博主的文章!!! 全部文章请关注微信公众号【亓官劼】。

题目

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

示例 1:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true

示例 2:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

示例 3:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • boardword 仅由大小写英文字母组成

**进阶:**你可以使用搜索剪枝的技术来优化解决方案,使其在 board 更大的情况下可以更快解决问题?

Python描述

爆搜,这里每个单词只能用一次,加一个访问数组控制

class Solution:
    def exist(self, board: List[List[str]], word: str) -> bool:
        res = False
        n,m,lw = len(board),len(board[0]),len(word)
        dr = [[-1,0],[0,1],[1,0],[0,-1]]
        v = [[0 for _ in range(m)] for __ in range(n)]
        def dfs(dx,dy,pos):
            nonlocal res,lw,word
            if pos == lw:
                res = True
                return
            for d in range(4):
                nx,ny = dx+dr[d][0], dy+dr[d][1]
                if 0 <= nx < n and 0 <= ny < m and v[nx][ny] == 0 and board[nx][ny] == word[pos]:
                    v[nx][ny] = 1
                    dfs(nx,ny,pos+1)
                    v[nx][ny] = 0
            
        for i in range(n):
            for j in range(m):
                if board[i][j] == word[0]:
                    v[i][j] = 1
                    dfs(i,j,1)
                    if res:
                        return res
                    v[i][j] = 0
        return False

以上是关于Python描述 LeetCode 79. 单词搜索的主要内容,如果未能解决你的问题,请参考以下文章

Python描述 LeetCode 79. 单词搜索

Python描述 LeetCode 79. 单词搜索

[LeetCode in Python] 79 (M) word search 单词搜索

Leetcode刷题Python79. 单词搜索和剑指 Offer 12. 矩阵中的路径

[LeetCode] 79. 单词搜索

LeetCode79-单词搜索