当前位置: 首页 > article >正文

LeetCode讲解篇之79. 单词搜索

文章目录

  • 题目描述
  • 题解思路
  • 题解代码
  • 题目链接

题目描述

在这里插入图片描述

题解思路

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

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

题解代码

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/


http://www.kler.cn/news/341228.html

相关文章:

  • R语言绘制三维散点图
  • Ubuntu下v4l2采集摄像头视频
  • YOLO11改进|卷积篇|RFAConv创新空间注意力和标准卷积操作
  • OpenCV高级图形用户界面(4)获取鼠标滚轮事件的增量值函数getMouseWheelDelta()的使用
  • 毕业设计项目——基于RISC-V的标签化跨层调度应用任务管理(论文/代码)
  • SpringCloud面试题-SpringCloud主要的组件有哪些
  • 系统端口号被占用问题处理(WindowsLinux系统)
  • T8332FN凯钰Tmtech LED驱动芯片车规级AEC-Q100
  • MySql 多表设计
  • 尚硅谷 rabbitmq 2024 第34-37 延时队列 答疑
  • 架构师知识梳理(八):系统安全
  • 标准正态分布的数据 tensorflow 实现正态分布图,python 编程,数据分析和人工智能
  • OpenCVSharp使用DNN图像分类详解
  • 信息论笔记
  • 云栖实录 | 大模型驱动,开源融合的 AI 搜索产品发布
  • 使用激光跟踪仪提升码垛机器人精度
  • Webpack详解及代码案例
  • (2024-10-10)Nginx相关知识,前端应该学会的基础知识
  • 网络资源模板--Android Studio 打地鼠游戏App
  • LVS-DR+Keepalived 高可用群集部署