LeetCode讲解篇之79. 单词搜索

文章目录

题目描述

题解思路

我们遍历对矩阵中的每个点,对每个点采用深度优先搜索,检查是否能以当前点做为开头来匹配word

我们使用一个与矩阵相同规格的二维数组表示矩阵中对应的点是否被访问过,防止重复计算

题解代码

go 复制代码
func exist(board [][]byte, word string) bool {
    m, n := len(board), len(board[0])

	// 表示矩阵中i, j位置是否在一次搜索word的过程中被访问过
    used := make([][]bool, m)
    for i := 0; i < m; i++ {
        used[i] = make([]bool, n)
    }

	// 当前要匹配word哪一个字符的下标
    idx := 0

    var dfs func(i, j int) bool
    dfs = func(i, j int) bool {
    	// word所有字符已经找到
        if idx == len(word) {
            return true
        }
        // 越界、已经被访问过、当前矩阵中的字符不是word需要匹配的字符,这些情况表示从当前字符开始无法找到word[idx:]这个字符串
        if i < 0 || j < 0 || i >= m || j >= n || used[i][j] || board[i][j] != word[idx] {
            return false
        }

		// 继续搜索word[idx + 1:]
        idx++
        used[i][j] = true
        if dfs(i, j + 1) || dfs(i, j - 1) || dfs(i + 1, j) || dfs(i - 1, j) {
            return true
        }
        used[i][j] = false
        idx--

        return false
    }

    for i := 0; i < m; i++ {
        for j := 0; j < n; j++ {
            if dfs(i, j) {
                return true
            }
        }
    }

    return false
}

题目链接

https://leetcode.cn/problems/word-search/description/

相关推荐
爱喝雪碧的可乐5 小时前
2026 腾讯广告算法大赛优秀方案启示:行为条件化多模态自回归生成推荐摘要
算法·数据挖掘·回归·推荐系统·推荐算法
碧海银沙音频科技研究院5 小时前
音箱在加入 NN AEC(神经网络声学回声消除) 后出现反复重启问题解决
人工智能·深度学习·算法
叼烟扛炮6 小时前
C++ 知识点18 内部类
开发语言·c++·算法·内部类
YOGOD有神6 小时前
用AI自动从谷歌地图抓取海外客户,我跑了一次7小时的任务,结果出乎意料
算法
汉克老师6 小时前
GESP5级C++考试语法知识(十五、分治算法(二))
c++·算法·排序算法·分治算法·gesp5级·gesp五级
快瞳科技6 小时前
小样本学习在珍稀鸟类识别中的突破:仅需5张图,让AI认识濒危物种
算法
汉克老师7 小时前
GESP6级C++考试语法知识(五、格雷码)
c++·算法·位运算·异或·gesp6级·gesp六级·格雷码
Ulyanov7 小时前
《从质点到位姿:基于Python与PyVista的导弹制导控制全栈仿真》: 可视化革命——基于 PyVista 的 3D 战场构建与实时渲染
开发语言·python·算法·3d·系统仿真
,,?!,7 小时前
数据结构算法-排序算法
数据结构·算法·排序算法
小白编程锤炼7 小时前
深入解析:质量门禁
人工智能·算法·架构·vibe-coding