力扣题/回溯/单词搜索

news2024/11/25 10:41:26

单词搜索

力扣原题

给定一个 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

/**
 * @param {character[][]} board
 * @param {string} word
 * @return {boolean}
 */
var exist = function(board, word) {
    let res = false
    let visited = new Set()
    const m = board.length
    const n = board[0].length
    // i:当前访问横坐标 j:当前访问纵坐标 x:当前word中匹配字符的下标
    function dfs(i = 0, j = 0, x = 0) {
        if(res) return
        if(x === word.length) return res = true
        if(i < 0 || i >= m) return
        if(j < 0 || j >= n) return
        // 如果当前位置未访问过,且word[x]等于当前位置的值
        const val = board[i][j]
        if(!visited.has(`${i}-${j}`) && word[x] === val) {
            // 记录访问状态
            visited.add(`${i}-${j}`)
            // 访问下一个 上下左右方向 
            dfs(i-1, j, x + 1)
            dfs(i+1, j, x + 1)
            dfs(i, j-1, x + 1)
            dfs(i, j+1, x + 1)
            // 访问完后递归时删除访问记录
            visited.delete(`${i}-${j}`)
        }
    }

    for(let i = 0; i < m; i++) {
        for(let j = 0; j < n; j++) {
            dfs(i,j)
        }
    }
    
    return res
};

解题思路

  1. 使用深度遍历dfs
  2. 网格逐个位置开始遍历,word从下标x=0字符开始,如果判断word当前下标值等于网格位置的值,则记录当前已访问网格坐标,并从上下左右4个方向继续访问,并判断x=x+1的下一个字符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2123660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024微信个人名片在线生成HTML源码

源码介绍 微信个人名片卡片在线生成&#xff0c;这是一款微信个人名片生成网站源码&#xff0c;无第三方接口&#xff0c;本地直接生成可长期使用。 主要用于生成用户个性化的名片页面&#xff0c;包括头像、姓名、联系方式、个人介绍等信息。 在本地浏览器打开即可,源码是h…

使用VSCode 安装SAP Fiori 开发所需插件

文章目录 1.0 SAP Fiori Tools - Extension Pack2.0 SAPUI5 Extension 1.0 SAP Fiori Tools - Extension Pack 此插件集成了SAP Fiori 的多个插件&#xff0c;安装这个将包含其他Fiori安装插件 SAP Fiori工具-扩展包 SAP Fiori Tools简化了SAP Fiori元素应用程序的开发。包括…

AI基础 L17 Logic Agents II

Logic in General • Logics are formal languages for representing information such that conclusions can be drawn • Syntax defines the sentences in the language • Semantics define the “meaning” of sentences; i.e., define truth of a sentence in a world •…

文件存储阿里云

1.图片存储 图片存储是指将图片文件保存在服务器或云存储中的技术或服务。图片存储的主要目的是方便用户上传、存储、管理和分享图片文件。 图片存储可以分为两种主要类型&#xff1a;本地存储和云存储。 本地存储是将图片文件保存在本地服务器或计算机上的一种方式。这种存…

SpringBoot教师招聘管理系统---附源码81097

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2系统分析 2.1 可行性分析 2.1.1 技术可行性 2.1.2 经济可行性 2.1.3 操作可行性 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功…

【运维监控】Prometheus+grafana监控spring boot 3运行情况

本示例通过spring boot自带的监控信息暴露出来&#xff0c;然后将数据收集到prometheus中&#xff0c;最后通过grafana的dashboard导入模板进行可视化。本示例分为四个部分&#xff0c;即prometheus、grafana部署、springboot示例和最后的集成。说明&#xff1a;本示例中的部署…

ubuntu ifconfig只有lo

ubuntu当前状态&#xff1a; 1、ubuntu系统所用网络模式为桥接模式。 2、ubuntu能ping通主机。 3、Ubuntu中没有wired connected选项&#xff0c;无法设置网络。 解决方案&#xff1a; 1.在Ubuntu终端输入命令&#xff1a; sudo lshw -c Network 检查网络状况发现-network …

精密量测软件(仿KLA免费浏览器程序ProfilmOnline)

KLA在线软件分析图 软件仿KLA公司免费浏览器软件ProfilmOnline&#xff0c;软件地址ProfilmOnline - 用于3D轮廓仪和AFM的表面成像、分析和测量软件 可以直接从profilmonline上下载3D图加载对比分析&#xff0c;当前已完成的内容有 1、调平 2、尖峰去噪 3、能量密度图&…

PHP智驭未来悦享生活智慧小区物业管理小程序系统源码

智驭未来&#xff0c;悦享生活 —— 探索智慧小区物业管理小程序 一、引言&#xff1a;智慧生活的新篇章 在这个日新月异的时代&#xff0c;科技正以前所未有的速度改变着我们的生活。从智能家居到智慧城市&#xff0c;每一处都闪耀着智慧的光芒。而今天&#xff0c;我要带大家…

MacOS wine中文乱码问题

安装wine 1、brew update 执行失败&#xff0c;提示安装如下 2、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow 3、git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow 3、brew update 4、brew in…

vue3+ts+vite搭建脚手架(一)根据菜单自动生成路由

自动生成路由 基础环境 vue 3.4 ts 5.5 vite 5.4 自动生成路由 只有一个基础的路由页面&#xff0c;根据菜单自动生成路由&#xff0c;不适用于所有的项目&#xff0c;可自行玩玩 1.文件目录结构 └── src/├── assets/ ├── layouts/ ├…

HarmonyOS学习(十)——网络编程

文章目录 1、通过HTTP请求网络2、Web组件2.1、加载本地网页2.2、加载在线网页2.3、网页缩放2.4、文本缩放2.5、web组件事件以及状态说明2.6、处理页面导航 1、通过HTTP请求网络 官方API文档地址&#xff1a;HTTP数据请求-Network Kit数据传输能力-Network Kit&#xff08;网络…

分类预测|基于雪消融优化BP神经网络的数据分类预测Matlab程序SAO-BP 多特征输入多类别输出 含基础程序

分类预测|基于雪消融优化BP神经网络的数据分类预测Matlab程序SAO-BP 多特征输入多类别输出 含基础程序 文章目录 一、基本原理二、实验结果三、核心代码四、代码获取五、总结 一、基本原理 SAO-BP模型结合了雪消融优化算法&#xff08;SAO&#xff09;和BP神经网络。以下是详细…

架空输电线路故障监测:可视精灵的导线全方位监测之道

集高科技与智能化于一身的“架空输电线路故障可视精灵”&#xff0c;以精准、高效、全面的监测能力&#xff0c;成为守护输电线路安全的得力助手&#xff0c;接下来&#xff0c;深圳鼎信智慧带您走近它&#xff1a; 技术概述 物联网&#xff08;IoT&#xff09;&#xff1a;通…

神卓互联NAS助手SPK套件安装与使用指南

目录 一、SPK套件简介 二、安装前准备 三、安装步骤 1. 下载SPK套件 2. 安装SPK套件 3. 登录套件 四、使用指南 1. 创建访问映射规则 2. 外网访问 一、SPK套件简介 神卓互联NAS助手SPK套件&#xff0c;是专为群晖NAS设备设计的一款软件扩展包。采用先进的WanGooeTunn…

SpringBoot2:请求处理原理分析-接口参数解析原理(argumentResolvers)

一、知识回顾 我们知道&#xff0c;接口的参数&#xff0c;一般都要配上注解来一起使用。 不同的参数注解&#xff0c;决定了传参的方式不同。 为什么会这样&#xff1f; 如果让你设计接口参数解析&#xff0c;你会怎么做&#xff1f; 首先&#xff0c;我们知道方法参数是形…

双指针(8)_单调性_四数之和

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 双指针(8)_单调性_四数之和 收录于专栏【经典算法练习】 本专栏旨在分享学习C的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 1. 题目…

QDY421F-16P-25液氨不锈钢液动紧急切断阀

一、产品概述 QDY421F-16P-25液氨不锈钢液动紧急切断阀&#xff0c;采用先进的液动驱动技术&#xff0c;结合高质量的不锈钢材质&#xff0c;专为满足液氨等腐蚀性介质的紧急切断需求而设计。该阀门的工作压力可达16MPa&#xff0c;适用于DN25&#xff08;即25毫米&#xff09;…

单向链表概述

文章目录 &#x1f34a;自我介绍&#x1f34a;单向链表概述数据域和指针域数据类型设计 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以&#xff1a;点赞关注评论收藏&#xff08;一键四连&#xff09;哦~ &#x1f34a;自我介绍 Hello,大家好&#xff0c;我是小珑也要…

高斯消元法

顾名思义就是我们初中所知的消元方程&#xff0c;用来解方程的&#xff0c;但是如果自己手动去实现的话&#xff0c;还是有一部分难度的&#xff0c;因此我们也会用到线代这门科目&#xff0c;因为这是实现计算自动化的关键步骤 现在这里放上高斯消元的板子&#xff08;可以用…