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

回溯-单词搜索

79.单词搜索

给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。

输入:二维字符数组,给定字符串
输出:布尔值
思路:遍历字符数组,下上右左递归回溯

递归参数: 当前元素在矩阵 board 中的行列索引 i 和 j ,当前目标字符在 word 中的索引 k 。
终止条件
返回 false : (1) 行或列索引越界 或 (2) 当前矩阵元素与目标字符不同 或 (3) 当前矩阵元素已访问过 ( (3) 可合并至 (2) ) 。
返回 true : k = len(word) - 1 ,即字符串 word 已全部匹配。
递推工作
标记当前矩阵元素: 将 board[i][j] 修改为 空字符‘\0’ ,代表此元素已访问过,防止之后搜索时重复访问。
搜索下一单元格: 朝当前元素的 上、下、左、右 四个方向开启下层递归,使用 或 连接 (代表只需找到一条可行路径就直接返回,不再做后续 DFS ),并记录结果至 res 。
还原当前矩阵元素: 将 board[i][j] 元素还原至初始值,即 word[k]

class Solution {public boolean exist(char[][] board, String word) {char[] words = word.toCharArray();//字符数组长度int x = board.length;int y = board[0].length;//遍历字符数组for(int i = 0; i < x; i++){for(int j = 0; j < y; j++){if(backTrack(board, words, i, j, 0)){return true;}}}return false;}public boolean backTrack(char[][] board, char[] words, int x, int y, int index){//递归结束//数组越界, 或者元素不符  if(x < 0 || y < 0 ||x >= board.length ||y >= board[0].length ||board[x][y] != words[index]){return false;}//遍历到words最后一个元素if(index == words.length - 1){return true;}//将现在的字符置为空,防止重复访问board[x][y] = '\0';//递归下上右左boolean res = backTrack(board, words, x + 1, y, index + 1) ||backTrack(board, words, x - 1, y, index + 1) || backTrack(board, words, x, y + 1, index + 1) || backTrack(board, words, x, y - 1, index + 1);//还原board[x][y] = words[index];return res;}}

相关文章:

回溯-单词搜索

79.单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那些水平…...

高级java每日一道面试题-2025年3月07日-微服务篇[Eureka篇]-Eureka Server和Eureka Client关系?

如果有遗漏,评论区告诉我进行补充 面试官: Eureka Server和Eureka Client关系? 我回答: 在微服务架构中&#xff0c;Eureka作为Netflix开源的服务发现组件&#xff0c;由Eureka Server&#xff08;服务端&#xff09;和Eureka Client&#xff08;客户端&#xff09;两大部分…...

SpringBoot有几种获取Request对象的方法

HttpServletRequest 简称 Request&#xff0c;它是一个 Servlet API 提供的对象&#xff0c;用于获取客户端发起的 HTTP 请求信息。例如&#xff1a;获取请求参数、获取请求头、获取 Session 会话信息、获取请求的 IP 地址等信息。 那么问题来了&#xff0c;在 Spring Boot 中…...

【Agent】Dify Docker 安装问题 INTERNAL SERVER ERROR

总结&#xff1a;建议大家选择稳定版本的分支&#xff0c;直接拉取 master 分支&#xff0c;可能出现一下后面更新代码导致缺失一些环境内容。 我是通过 Docker 进行安装的&#xff0c;由于项目开发者不严谨导致&#xff0c;遇到一个奇怪的问题&#xff1a; INTERNAL SERVER E…...

操作系统——(处理机调度与死锁)

目录 一、处理机调度 &#xff08;1&#xff09;层次 &#xff08;2&#xff09;进程调度 &#xff08;3&#xff09;调度算法 1.先来先服务算法&#xff08;FCFS&#xff09; 2.短作业优先算法&#xff08;SJF&#xff09; 3.高优先权算法&#xff08;HPF&#xff09; …...

MyBatis 面试专题

MyBatis 面试专题 基础概念MyBatis中的工作原理MyBatis 与 Hibernate 的区别&#xff1f;#{} 和 ${} 的区别&#xff1f;MyBatis 的核心组件有哪些&#xff1f; 映射与配置如何传递多个参数&#xff1f;ResultMap 的作用是什么&#xff1f;动态 SQL 常用标签有哪些&#xff1f;…...

C++实现大整数相加

力扣原题字符串相加 415. 字符串相加 - 力扣&#xff08;LeetCode&#xff09; 大整数意味着无法用基本数据类型装下&#xff0c;只能用字符串装下&#xff0c;然后手工模拟计算过程 从两个字符串的最后一位开始两两相加&#xff0c;记录进位&#xff0c;每次均有sumabsum&…...

Flutter 快速接入Fair

少点废话 1.了解Fair Fair&#xff0c;由58同城开源提供&#xff0c;目的是flutter项目上架后动态更新代码&#xff0c; 首先了解一个概念&#xff0c;热更新是flutter打包APK后会讲所有的dart代码生成一个so文件&#xff0c;手机通过读取并执行so文件&#xff1b;基于此&am…...

【深度学习新浪潮】AI ISP技术与手机厂商演进历史

本文是关于AI ISP(人工智能图像信号处理器)的技术解析、与传统ISP(图像信号处理器)的区别、近三年研究进展,以及各大手机厂商在该领域演进历史的详细报告。本报告综合多个权威来源的信息,力求全面、深入地呈现相关技术发展脉络与行业动态。 第一部分:AI ISP的定义及与传…...

用逻辑分析仪分析Usart波形

USART的波形抓取最简单&#xff0c;帧头帧尾只需要电平上升下降沿就可以了&#xff0c;不需要自己定义&#xff0c;也没有ID位&#xff0c;逻辑分析仪可以直接抓取发送的数据&#xff1a; 口配置&#xff1a;9600bps&#xff0c;8数据位&#xff0c;无校验&#xff0c;1个停止位…...

常⻅CMS漏洞 -DeDeCMS 获取webshell

DedeCMS是织梦团队开发PHP ⽹站管理系统&#xff0c;它以简单、易⽤、⾼效为特⾊&#xff0c;组建出各种各样各 具特⾊的⽹站 姿势⼀&#xff1a;通过⽂件管理器上传WebShell 1.访问⽬标靶场dedecms 后台可以直接上传任意⽂件 2.上传木马文件 3.蚁剑连接 姿势⼆&#xff1a;…...

基于STC89C51的太阳自动跟踪系统的设计与实现—单片机控制步进电机实现太阳跟踪控制(仿真+程序+原理图+PCB+文档)

摘 要 随着我国经济的飞速发展&#xff0c;促使各种能源使用入不敷出&#xff0c;尤其是最主要的能源&#xff0c;煤炭石油资源不断消耗与短缺&#xff0c;因此人类寻找其他替代能源的脚步正在加快。而太阳能则具有无污染﹑可再生﹑储量大等优点&#xff0c;且分布范围广&…...

JAVA_数据结构_栈和队列

1.栈&#xff08;Stack&#xff09; 1.1概念 栈是一种特殊的线性表&#xff0c;它只允许一端进行增删查改操作&#xff0c;它的头称为栈顶&#xff0c;进行压栈和出栈的操作&#xff0c;则另一端称为栈底&#xff0c;并且它遵循着先进后出的操作。 压栈&#xff1a;也可称为进…...

独立组网和非独立组网

独立组网&#xff08;SA&#xff09; vs. 非独立组网&#xff08;NSA&#xff09; 5G组网方式主要分为 独立组网&#xff08;SA, Standalone&#xff09; 和 非独立组网&#xff08;NSA, Non-Standalone&#xff09;&#xff0c;两者在网络架构、核心网、应用场景等方面有所不…...

HR人员和组织信息同步AD域服务器实战方法JAVA

HR人员和组织信息同步AD域服务器 前期准备AD域基础知识整理HR同步AD的逻辑代码结构配置文件设置启动类HR组织的BeanHR人员Bean获取HR人员和组织信息的类AD中处理组织和人员的类日志配置 POM.xml文件生成EXE文件服务器定时任务异常问题注意事项 前期准备 1、开发语言&#xff1…...

【云上CPU玩转AIGC】——腾讯云高性能应用服务HAI已支持DeepSeek-R1模型预装环境和CPU算力

&#x1f3bc;个人主页&#xff1a;【Y小夜】 &#x1f60e;作者简介&#xff1a;一位双非学校的大三学生&#xff0c;编程爱好者&#xff0c; 专注于基础和实战分享&#xff0c;欢迎私信咨询&#xff01; &#x1f386;入门专栏&#xff1a;&#x1f387;【MySQL&#xff0…...

【测试开发】OKR 网页管理端自动化测试报告

【测试报告】OKR 管理端 项目名称版本号测试负责人测试完成日期联系方式OKR 管理端4.0马铭胜2025-03-2115362558972 1、项目背景 1.1 OKR 用户端 在如今这个快节奏的时代中&#xff0c;个人和组织的成长往往依赖于清晰、明确且意义深远的目标。然而&#xff0c;如何设定并持…...

go语言中空结构体

空结构体(struct{}) 普通理解 在结构体中&#xff0c;可以包裹一系列与对象相关的属性&#xff0c;但若该对象没有属性呢&#xff1f;那它就是一个空结构体。 空结构体&#xff0c;和正常的结构体一样&#xff0c;可以接收方法函数。 type Lamp struct{}func (l Lamp) On()…...

如何缓解大语言模型推理中的“幻觉”(Hallucination)?

目录 如何缓解大语言模型推理中的“幻觉”&#xff08;Hallucination&#xff09;&#xff1f; 1. 什么是大语言模型的“幻觉”&#xff08;Hallucination&#xff09;&#xff1f; 幻觉的常见类型 2. 如何缓解大模型的幻觉问题&#xff1f; 方法 1&#xff1a;使用知识检索…...

优选算法系列(3.二分查找 )

目录 一.二分查找&#xff08;easy&#xff09; 题目链接&#xff1a;704. 二分查找 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a; 代码&#xff1a; 二.在排序数组中查找元素的第⼀个和最后⼀个位置&#xff08;medium&#xff09; 题目链接&#xff1a;34.…...

【论文阅读】Contrastive Clustering Learning for Multi-Behavior Recommendation

论文地址&#xff1a;Contrastive Clustering Learning for Multi-Behavior Recommendation | ACM Transactions on Information Systems 摘要 近年来&#xff0c;多行为推荐模型取得了显著成功。然而&#xff0c;许多模型未充分考虑不同行为之间的共性与差异性&#xff0c;以…...

细胞计数专题 | 高效 + 精准!点成LUNA-III™细胞计数仪解锁活细胞检测与浓度分析新高度

1 引言 在生物医学研究中&#xff0c;准确的细胞计数至关重要&#xff0c;它影响着细胞治疗、疾病诊断、组织再生和生物测定等应用领域。传统的手动计数方法既耗时又容易产生偏差。像点成LUNA-III™自动细胞计数仪这样的自动化系统&#xff0c;为提高计数的准确性、可重复性和…...

糊涂人寄信——递推

思路分析&#xff1a;当有n封信&#xff0c;n个信封时。第k封信没有装在第k个信封里&#xff08;k从1~n&#xff09;&#xff0c;就算所有的信封都装错了。我们可以得知的是&#xff0c;当有1封信,时&#xff0c;装错类别数为0。当有两封信时&#xff0c;装错类别为1。 当有三…...

深入Python C API:掌握常用函数与实战技巧

深入Python C API&#xff1a;掌握常用函数与实战技巧 Python的灵活性和易用性使其成为广泛应用的编程语言&#xff0c;但在某些场景下&#xff08;如高性能计算、与C/C代码交互&#xff09;&#xff0c;直接使用C语言扩展Python的能力变得尤为重要。Python C API&#xff08;…...

第16章:基于CNN和Transformer对心脏左心室的实验分析及改进策略

目录 1. 项目需求 2. 网络选择 2.1 UNet模块 2.2 TransUnet 2.2.1 SE模块 2.2.2 CBAM 2.3 关键代码 3 对比试验 3.1 unet 3.2 transformerSE 3.3 transformerCBAM 4. 结果分析 5. 推理 6. 下载 1. 项目需求 本文需要做的工作是基于CNN和Transformer的心脏左心室…...

Word中公式自动标号带章节编号

&#xff08;1&#xff09;插入一行三列的表格&#xff0c;设置宽度分别为0.5&#xff0c;13.39和1.5&#xff0c;设置纵向居中&#xff0c;中间列居中对齐&#xff0c;最右侧列靠右对齐&#xff0c;设置段落如下 &#xff08;2&#xff09;插入域代码 【Word】利用域代码快速实…...

AI风向标《AI与视频制作全攻略:从入门到精通实战课程》

课程信息 AI风向标《AI与视频制作全攻略&#xff1a;从入门到精通实战课程》,夸克网盘和百度网盘课程。 课程介绍 《AI与视频制作全攻略&#xff1a;从入门到精通实战课程》是一套全面融合AI技术与视频制作的实战课程&#xff0c;旨在帮助创作者从基础软件使用到高级视频剪辑…...

el-table折叠懒加载支持排序

el-table折叠懒加载支持排序 因为el-table懒加载的子节点是通过缓存实现的&#xff0c;如果想在展开的情况下直接刷新对应子节点数据&#xff0c;要操作el-table组件自身数据&#xff0c;否则不会更新 以排序功能为例 maps: new Map() //用于存储子节点懒加载的数据// 加载子…...

Kotlin v2.1.20 发布,标准库又有哪些变化?

大家吼哇&#xff01;就在三小时前&#xff0c;Kotlin v2.1.20 发布了&#xff0c;更新的内容也已经在官网上更新&#xff1a;What’s new in Kotlin 2.1.20 。 我粗略地看了一下&#xff0c;下面为大家选出一些我比较感兴趣、且你可能也会感兴趣的内容。 注意&#xff01;这里…...

AI智能问答“胡说八道“-RAG探索之路

AI智能问答"胡说八道"-RAG探索之路 背景信息RAGRAG技术的知识难题分块矛盾知识缺失相互冲突 RAG知识优化实践分块优化缺失优化冲突优化 未来展望 背景信息 你有没有遇到过这样的场景&#xff1f;当你向智能助手提问&#xff1a;“某科技公司为何突然更换高层领导&am…...

【yolo】YOLO训练参数输入之模型输入尺寸

模型输入尺寸是YOLO训练和推理过程中非常重要的参数之一。YOLO要求输入图像的尺寸是固定的&#xff0c;通常为正方形&#xff08;如416416、640640等&#xff09;。这个尺寸直接影响模型的性能和速度。以下是对模型输入尺寸的详细介绍&#xff1a; 1. 模型输入尺寸的作用 统一…...

[原创](Modern C++)现代C++的关键性概念: 如何声明一个返回数组指针的函数?

[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、C …...

1204. 【高精度练习】密码

文章目录 题目描述输入输出样例输入样例输出数据范围限制CAC代码 题目描述 人们在做一个破译密码游戏&#xff1a; 有两支密码棒分别是红色和蓝色&#xff0c;把红色密码棒上的数字减去蓝色 密码棒上的数字&#xff0c;就是开启密码锁的密码。 现已知密码棒上的数字位数不超过…...

DigitalFoto公司如何用日事清流程管理工具实现任务优先级与状态可视化?

一、业务介绍 在DigitalFoto&#xff0c;设计和制造先进的摄影器材&#xff0c;如稳定器、灯光设备和支架&#xff0c;是日常工作的核心。公司的业务模式包括为其他品牌设计和制造定制产品&#xff0c;无论是作为OEM还是ODM。这样的多样化业务需求推动了公司在产品开发上必须非…...

解锁C++编程能力:基础语法解析

C入门基础 一、C的第一个程序二、命名空间三、C输入&输出四、缺省参数/默认参数五、函数重载六、引用1.引用的特性2.引用的使用引用做返回值场景 3.const引用只有指针和引用涉及权限放大、缩小的问题&#xff0c;普通变量没有 4.指针和引用的关系 七、inline八、nullptr 一…...

【Leetcode 每日一题】2680. 最大或值

问题背景 给你一个下标从 0 0 0 开始长度为 n n n 的整数数组 n u m s nums nums 和一个整数 k k k。每一次操作中&#xff0c;你可以选择一个数并将它乘 2 2 2。 你最多可以进行 k k k 次操作&#xff0c;请你返回 n u m s [ 0 ] ∣ n u m s [ 1 ] ∣ . . . ∣ n u m …...

YOLO魔改之SAM空间注意力模块

基于SAM注意力的YOLOv7改进算法详解(可用于工业检测方案) 一、应用场景说明 本改进算法适用于以下工业检测场景: ​复杂背景下的微小目标检测​(电子元件缺陷、PCB板焊点)​密集目标重叠检测​(传送带上的包裹分拣、人群计数)​动态环境目标追踪​(无人机巡检、自动驾…...

基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究

基于 TRIZ 理论的筏式养殖吊笼清洗装备设计研究 一、引言 筏式养殖在水产养殖业中占据重要地位&#xff0c;吊笼作为养殖贝类、藻类等生物的关键器具&#xff0c;其清洁程度直接影响养殖生物的健康与产量。传统的吊笼清洗方式多依赖人工&#xff0c;效率低下、劳动强度大且清洗…...

Day11 动态规划入门

动态规划 就是 : 给定一个问题&#xff0c;我们把它拆成一个个子问题&#xff0c;直到子问题可以直接解决。然后把子问题的答案保存起来&#xff0c;以减少重复计算。再根据子问题答案反推&#xff0c;得出原问题解的一种方法. 记忆化搜索 暴力dfs 记录答案 动态规划入门思…...

配置阿里云yum源

配置阿里云yum源 修改默认的yum仓库&#xff0c;把原有的移动到创建的目录里&#xff08;踢出国外的yum源&#xff09; # 切换到/ect/yum.repos.d/目录下 cd /etc/yum.repos.d/ # 新建repo目录 mkdir repo # 把原有的移动到创建的目录里 mv ./*.repo ./repo/配置yum源 # 找到…...

在Linux系统安装Ollama两种方法:自动安装和手动安装,并配置自启动服务

目录 一、命令自动安装‌ &#xff08;一&#xff09;使用命令行安装 &#xff08;二&#xff09;配置环境变量 &#xff08;三&#xff09;重新加载systemd配置并重启服务 ‌二、手动安装‌ &#xff08;一&#xff09;下载本地文件 &#xff08;二&#xff09;解压并安…...

Python Django入门(创建应用程序)

在本章中&#xff0c;你将学习如何使用 Django&#xff08;http://djangoproject.com/ &#xff09;来开发一个名为“学习笔记”&#xff08;Learning Log&#xff09;的项目&#xff0c;这是一个在线日志系统&#xff0c;让你能够记录所学习的有关特定主题的知识。 我们将为这…...

HCIP-2 RSTP快速生成树

HCIP-2 RSTP快速生成树 STP的不足&#xff1a; 1.STP的端口角色过于简单不丰富&#xff0c;部署时不能很好的应用与较为复杂的网络环境中。 2.STP的迁移状态过于冗长&#xff0c;侦听、学习、阻塞状态下都是不转发业务流量。 3.STP的算法较为繁琐。 TCN TCA TC。 4.STP被动…...

软考-软件设计师-计算机网络

一、七层模型 中继器&#xff1a;信号会随着距离的增加而逐渐衰减&#xff0c;中继器可以接受一端的信息再将其原封不动的发给另一端&#xff0c;起到延长传输距离的作用&#xff1b; 集线器&#xff1a;多端口的中继器&#xff0c;所有端口公用一个冲突域&#xff1b; 网桥&…...

夸克网盘任务脚本——进阶自动版

脚本是用于自动管理和更新夸克云盘(Quark Cloud Drive)上的文件和目录的Python脚本。其主要功能包括自动下载、更新、重命名、删除文件和文件夹,以及处理和发送通知,可以在特定的时间间隔内运行,根据配置文件进行操作。 主要功能 1. Quark 类: __init__:初始化类,设置…...

squirrel语言全面介绍

Squirrel 是一种较新的程序设计语言&#xff0c;由意大利人 Alberto Demichelis 开发&#xff0c;其设计目标是成为一个强大的脚本工具&#xff0c;适用于游戏等对大小、内存带宽和实时性有要求的应用程序。以下是对 Squirrel 语言的全面介绍&#xff1a; 语言特性 动态类型&a…...

北京南文观点:品牌如何抢占AI 认知的 “黄金节点“

在算法主导的信息洪流中&#xff0c;品牌正在经历一场隐蔽的认知权争夺战&#xff0c;当用户向ChatGPT咨询"哪家新能源车企技术最可靠"时&#xff0c;AI调取的知识图谱数据源将直接决定品牌认知排序。南文乐园科技文化&#xff08;北京&#xff09;有限公司&#xff…...

使用Python在Word中创建、读取和删除列表 - 详解

目录 工具与设置 Python在Word中创建列表 使用默认样式创建有序&#xff08;编号&#xff09;列表 使用默认样式创建无序&#xff08;项目符号&#xff09;列表 创建多级列表 使用自定义样式创建列表 Python读取Word中的列表 Python从Word中删除列表 在Word中&#xff…...

分布式中间件:RabbitMQ确认消费机制

分布式中间件&#xff1a;RabbitMQ确认消费机制 在分布式系统中&#xff0c;消息队列是实现异步通信和系统解耦的重要组件。RabbitMQ 作为一款功能强大的消息队列中间件&#xff0c;提供了丰富的特性来保证消息的可靠传输和消费。其中&#xff0c;确认消费机制是确保消息被正确…...

Redis的大Key问题如何解决?

大家好&#xff0c;我是锋哥。今天分享关于【Redis的大Key问题如何解决?】面试题。希望对大家有帮助&#xff1b; Redis的大Key问题如何解决? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Redis的大Key问题指的是存储在Redis中的某些键&#xff08;Key&#xf…...