力扣题/回溯/单词搜索

news/2024/9/17 19:03:35/ 标签: leetcode, 算法, javascript, 前端

单词搜索

力扣原题

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

javascript">/*** @param {character[][]} board* @param {string} word* @return {boolean}*/
var exist = function(board, word) {let res = falselet visited = new Set()const m = board.lengthconst n = board[0].length// i:当前访问横坐标 j:当前访问纵坐标 x:当前word中匹配字符的下标function dfs(i = 0, j = 0, x = 0) {if(res) returnif(x === word.length) return res = trueif(i < 0 || i >= m) returnif(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.ppmy.cn/news/1523735.html

相关文章

QT:QWidget 控件属性的介绍

控件属性介绍 &#x1f334;enabled 状态属性&#x1f334;geometry 几何属性示例一&#xff1a;改变控件尺寸示例二&#xff1a;更变控件位置window frame 的影响 &#x1f334;windowTitle 窗口标题&#x1f334;windowIcon 窗口图标&#x1f334; qrc机制&#x1f334;windo…

iOS 18beta/正式版升级办法分享

随着科技的飞速发展&#xff0c;苹果公司每一次的iOS系统更新都为我们带来了前所未有的便捷与惊喜。如今&#xff0c;iOS 18的发布再次激起了广大iPhone用户的升级热情。为了让大家能够顺利、高效地升级到这一全新系统&#xff0c;今天我将为大家分享几种实用的升级iOS 18的方法…

visio修改默认字体、颜色、形状格式、连接线格式

设计中取消勾选“将主题应用于新建的形状” 在开发工具中打开绘图资源管理器&#xff0c;并分别修改纯文本、连接线、主题的样式

0. 阿里大模型API获取步骤

这里通过阿里云百炼平台获取大模型的API&#xff0c;实际上&#xff0c;支持openai库的API都可以作为学习的开始。 如果在进行之前想了解AI能做什么&#xff0c;你可以访问通义千问&#xff0c;在“玩”够了之后&#xff0c;点击右上角的API服务。 点击立即开通 然后过一些简单…

MongoDB设置系统服务启动教程

1、编辑mongodb.service文件 将MongoDB设置成系统服务&#xff0c;就可以通过systemctl进行启动停止重启&#xff0c;在目录/etc/systemd/system下编写mongodb.service文件&#xff1a; [Unit] DescriptionMongoDB Database Server Documentationhttps://www.mongodb.com/docs…

python转换并提取pdf文件中的图片

#安装fitz包 pip install pymupdf 脚本如下所示&#xff1a; import fitz import re import os import time import sysarguments sys.argvfor arg in arguments:print(arg)def file_name_list(base_dir):for i, j, k in os.walk(base_dir):name [i.replace(.pdf, ) for i …

欧几里得算法求最大公约数

两个不全为0的非负整数m&#xff0c;n的最大公约数记为gcd&#xff08;m&#xff0c;n&#xff09;&#xff0c;代表能够整除&#xff08;即余数为0&#xff09;m和n的最大正整数。 计算gcd&#xff08;m&#xff0c;n&#xff09;的欧几里得算法&#xff1a; 第一步&#xf…

Makefile的四种赋值运算符

Makefile有四种赋值运算符&#xff1a;简单赋值&#xff08;:&#xff09;、递归赋值&#xff08;&#xff09;、条件赋值&#xff08;?&#xff09;和追加赋值&#xff08;&#xff09; 1. 简单赋值&#xff08;:&#xff09; 作用&#xff1a;覆盖之前的值。若在多次简单赋…

Rancher 与 Kubernetes(K8s)的关系

1. 简介 1.1 Kubernetes 作为容器编排平台 Kubernetes 是一个开源平台&#xff0c;用于自动化部署、扩展和管理容器化的应用。它提供了容器调度、自动伸缩、健康检查、滚动更新等功能。 例子&#xff1a;假设您有一个微服务架构的应用程序&#xff0c;需要运行在多个节…

如何在 Vue 项目中缓存字体文件以提高性能

在现代 Web 开发中&#xff0c;字体文件通常是页面加载时间的重要因素之一。特别是在字体文件较大或网络环境不佳的情况下&#xff0c;用户体验可能会受到影响。本文将详细探讨如何在 Vue.js 项目中优化字体文件的加载和缓存&#xff0c;以提高页面性能。 一、为什么要缓存字体…

`Android NDK` `readelf` 在`Terminal`上的使用(配置`readelf`)

Android NDK readelf 在Terminal上的使用&#xff08;配置readelf&#xff09; 当一个 Android APP 需要集成别的地方来的原生库&#xff08;.so&#xff09;时&#xff0c;你可能也会跟我一样会有那么几点疑惑&#xff1a; 这个 so 用的什么 NDK 版本编译的&#xff1f;会不…

【conda】理解 `conda` 和 `pip`:Python 包管理工具的全面对比与最佳实践

目录 1. 概述2. 主要区别2.1 包管理范围2.2 环境管理2.3 安装机制2.4 依赖解决 3. 是否可以混用3.1. 混用Conda和Pip的注意事项3.2 混用时的最佳实践 4. 安装位置5. 如何判断包来源5.1 查看包列表5.2 检查包的来源 总结 在 Python 的开发过程中&#xff0c;包管理工具扮演了至关…

深入解析`node-html-to-image`的`main.ts`源码:实现HTML到图片的转换

引言 node-html-to-image是一个强大的Node.js库&#xff0c;它允许开发者将HTML内容转换为图片。本文将深入解析该库的main.ts文件&#xff0c;揭示其内部工作原理&#xff0c;并帮助开发者更好地理解和使用该库。 项目背景与功能概述 node-html-to-image的主要功能是将HTML…

判断语句有几种写法

在编程中&#xff0c;判断语句用于基于特定条件来控制程序的执行流程。以下是一些常见编程语言中判断语句的几种基本写法&#xff1a; ### 1. if 语句 if 语句是最基本的条件判断结构&#xff0c;用于在条件为真时执行一段代码。 **示例**: c if (condition) { // 条件为…

西门子博途零基础学PLC必会的100个指令

#西门子##PLC##自动化##工业自动化##编程##电工##西门子PLC##工业##制造业##数字化##电气##工程师# 工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

深度学习算法:现代人工智能的核心驱动

深度学习&#xff08;Deep Learning&#xff09;在人工智能领域表现出色&#xff0c;其复杂但强大的算法驱动了许多突破性应用。从图像分类、自然语言处理到自动驾驶等&#xff0c;深度学习展现了前所未有的可能性。本文将深入剖析深度学习算法的核心概念、主要框架及其面临的挑…

浙大数据结构:01-复杂度3 二分查找

数据结构MOOC PTA习题 01-复杂度3 二分查找 标准的二分查找。 注意下标从1开始&#xff0c;Last结束 没找到返回NotFound Position BinarySearch( List L, ElementType X ) {int nL->Last;int l1,rn;while(l<r){int mid(lr)/2;if(L->Data[mid]>X)rmid;else lm…

奋楫者“先”,中国产业数字化以“存”致远

回顾人类社会发展历程&#xff0c;从甲骨文、纸张&#xff0c;到磁带、光盘&#xff0c;再到硬盘、SSD&#xff0c;数据存储的每一次变革&#xff0c;都推动着人类文明和社会经济飞速发展。 进入到数字经济时代&#xff0c;数据作为核心生产要素&#xff0c;正逐步融入到生产、…

尚品汇-支付宝退款、支付成功库存系统对接实现(四十九)

目录&#xff1a; &#xff08;1&#xff09;支付宝退款 &#xff08;2&#xff09;支付成功处理 &#xff08;3&#xff09;订单模块发送减库存通知 &#xff08;4&#xff09;消费减库存结果 &#xff08;1&#xff09;支付宝退款 直接在浏览器发起请求即可&#xff01; …

【鸿蒙开发从0到1 day08】

鸿蒙开发基础 一.联合类型二.枚举类型三.组件和样式1. ArkUI基本语法 四.尺寸五.字体1.字体颜色2.字体样式3.LineHeight() 设置行高 上间距文字下间距4.下划线:5.对齐方式(1)水平对齐方式(2)垂直对齐方式 6.文本缩进和文本省略号设置 六.图片1.图片的等比例缩放2.占位符3.图片填…