力扣刷题Day 65:单词搜索(79)

article/2025/7/14 11:55:24

1.题目描述

2.思路

方法1(自己写的深度优先的回溯方法):遍历网格,每走过一格都将其坐标加入visited集合,然后向上、下、左、右四个方向查找可行路径,如果找到可行路径则一路向下延伸查找,如不可行则将该坐标从集合里删除,回退到上一坐标继续查找。

方法2(参考Krahets佬的题解对方法1进行了优化):无需用tmp记录当前字符串,直接简化为记录当前字符串长度即可,可进一步节省空间(字符串tmp->整数k)与时间(startswith比较字符串->比较指定坐标的一个字符)。

3.代码(Python3)

方法1:

class Solution:def exist(self, board: List[List[str]], word: str) -> bool:def backtrack(tmp, i, j):print(tmp, i, j)if tmp == word: return Truefor (move_m, move_n) in {(-1, 0), (1, 0), (0, -1), (0, 1)}:if 0 <= i + move_m < m and 0 <= j + move_n < n and word.startswith(tmp + board[i][j]):tmp += board[i][j]if backtrack(tmp, i + move_m, j + move_n): return Truereturn Falsem, n= len(board), len(board[0])for i in range(m):for j in range(n):if board[i][j] == word[0]:return backtrack(board[i][j], i, j)return False

方法2:

class Solution:def exist(self, board: List[List[str]], word: str) -> bool:def backtrack(k, i, j):visited.add((i, j))if k == len(word) - 1: return Truefor (move_m, move_n) in {(-1, 0), (1, 0), (0, -1), (0, 1)}:if 0 <= i + move_m < m and 0 <= j + move_n < n and (i + move_m, j + move_n) not in visited and word[k + 1] == board[i + move_m][j + move_n]:if backtrack(k + 1, i + move_m, j + move_n): return Truevisited.discard((i, j))return Falsem, n = len(board), len(board[0])visited = set()for i in range(m):for j in range(n):if board[i][j] == word[0]:if backtrack(0, i, j): return Truereturn False

4.执行情况

方法1:

方法2:

5.感想

在高铁上完成了这道题,棒棒嘟~


http://www.hkcw.cn/article/LksKfundht.shtml

相关文章

多卡训练核心技术详解

多卡训练核心技术详解 多卡训练 主要围绕分布式环境初始化、模型并行化、数据分片和梯度同步展开。下面结合您的代码,详细解释这些核心部分: 并行执行命令 torchrun --nproc_per_node=5 TokenLossMulCard.py 1. 分布式环境初始化 def init_distributed():init_process_…

PDT经理的角色认知

PDT团队 在IPD体系导入过程中&#xff0c;PDT经理&#xff08;又称LPDT&#xff0c;Leader of Product Development Team&#xff09;是最关键的角色之一&#xff0c;本篇文章中汉捷咨询就PDT经理的角色认知进行探讨。要认识PDT经理首先需要认识PDT&#xff0c;PDT&#xff08…

历年浙江大学计算机保研上机真题

2025浙江大学计算机保研上机真题 2024浙江大学计算机保研上机真题 2023浙江大学计算机保研上机真题 在线测评链接&#xff1a;https://pgcode.cn/school?classification1 最小包围矩形 题目描述 给定一系列二维平面点的坐标 ( x , y ) (x, y) (x,y)&#xff0c;其中 x x…

BKP(备份寄存器)和 RTC(实时时钟)

什么是BKP&#xff1f; 备份寄存器&#xff08;BackupRegister&#xff09;是42个16位的寄存器&#xff08;不同设备存在差异&#xff1a;20字节&#xff08;中容量和小容量&#xff09;/84字节&#xff08;大容量和互联型&#xff09;&#xff09;&#xff0c;可用来存储 最多…

antDesignVue中a-upload上传组件的使用

工作中需要使用上传组件&#xff0c;记录一下a-upload部分属性用法 1.showUploadList属性使用 使用:showUploadList"{ showRemoveIcon: true ,showDownloadIcon: true }"属性可控制右侧下载&#xff0c;删除图标 2.如何实现回显功能 使用:defaultFileList"fil…

基于RK3568/RK3588/全志H3/飞腾芯片/音视频通话程序/语音对讲/视频对讲/实时性好/极低延迟

一、前言说明 近期收到几个需求都是做音视频通话&#xff0c;很多人会选择用webrtc的方案&#xff0c;这个当然是个不错的方案&#xff0c;但是依赖的东西太多&#xff0c;而且相关组件代码量很大&#xff0c;开发难度大。所以最终选择自己属性的方案&#xff0c;那就是推流拉…

借助DS用python帮你编写脚本(辅助开发测试)

最近在做一个音频采集识别项目&#xff0c;采集20HZ到20KHZ各个频带最大分贝数&#xff08;DB&#xff09;&#xff0c;需要用到各个频段的测试音频来验证程序的正确性。 借助Deepseek&#xff0c;原本对python编程没有学过&#xff0c;也能轻松学会。 提问&#xff1a;pytho…

【图像处理基石】如何进行图像畸变校正?

图像畸变校正常用于计算机视觉、摄影测量学和机器人导航等领域&#xff0c;能够修正因镜头光学特性或传感器排列问题导致的图像失真。下面我将介绍几种常用的图像畸变校正算法&#xff0c;并提供Python实现和测试用例。 常用算法及Python实现 1. 径向畸变校正 径向畸变是最常…

技术创新如何赋能音视频直播行业?

在全球音视频直播行业的快速发展中&#xff0c;技术的持续创新始终是推动行业进步的核心动力。作为大牛直播SDK的开发者&#xff0c;我很荣幸能分享我们公司如何从产品的维度出发&#xff0c;精准把握市场需求&#xff0c;并不断推动产品的发展&#xff0c;以满足不断变化的行业…

我的世界服务端搭建

文章目录 我的世界服务端搭建使用forge搭建服务端确保服务器的 Java 环境安装1.20.1服务端配置文件修改启动游戏服务器 Minecraft server.properties 文件解析**基础设置****世界设置****网络与安全****性能优化****高级功能****配置文件示例****注意事项**Minecraft 白名单系统…

官宣正式分手 特朗普马斯克说了什么临别感言

官宣正式“分手” 特朗普马斯克都说了什么“临别感言”当地时间5月30日,美国总统特朗普和美国企业家、政府效率部负责人埃隆马斯克在白宫举行新闻发布会。特朗普称赞“政府效率部”成就在发布会上,特朗普对马斯克领导的“政府效率部”所达成的成就表示称赞,他称“政府效率部…

STM32通过rt_hw_hard_fault_exception中的LR寄存器追溯程序问题​

1. 问题现象 程序运行导致rt_hw_hard_fault_exception 如图 显示错误相关代码 struct exception_stack_frame {uint32_t r0;uint32_t r1;uint32_t r2;uint32_t r3;uint32_t r12; uint32_t lr; // 链接寄存器 (LR)uint32_t pc; // 程序计数器 (PC)uint32_t psr; // 程序状态…

AgenticSeek,开源本地通用AI Agent,自主执行任务

AgenticSeek是一款完全本地化的开源AI助手&#xff0c;作为Manus的开源替代品&#xff0c;专为保护用户隐私而设计。它能够在本地设备上执行多种任务&#xff0c;包括网页浏览、代码编写和复杂项目的规划&#xff0c;确保所有操作和数据均在用户的设备上完成。 AgenticSeek是什…

深入理解 Java 反射机制:动态编程的核心利器

一、反射机制的本质与核心价值 在 Java 的世界里&#xff0c;反射机制&#xff08;Reflection&#xff09;被视为连接静态编译与动态执行的桥梁。当程序运行时&#xff0c;反射允许我们在内存中动态获取类的完整结构信息&#xff0c;并对类的成员&#xff08;字段、方法、构造…

群晖synology nas安装curl教程

在群晖nas系统上发现没有curl这个命令,想通过opkg进行安装,发现opkg这个套件也没有,本章教程介绍如何安装opkg,并通过opkg 安装上curl命令工具,nas的系统版本是:x86_64 GNU/Linux synology_apollolake_918+ 一、安装opkg wget -O - http://bin.entware.net/x64-k3.2/inst…

非接触式数据引擎:RFID重塑锂电注液工艺实时交互生态

非接触式数据引擎&#xff1a;RFID重塑锂电注液工艺实时交互生态 浙江某锂电行业注液机上存在问题&#xff1a; 1.在锂电池制造的核心环节中&#xff0c;注液工艺直接影响电芯的电化学性能与安全稳定性。随着行业对电池一致性、生产效率及追溯能力的需求升级。 2.按设定的抽…

Shell基础命令

一、设置修改主机名称 1.文件方式&#xff08;重启生效&#xff09; 2.命令方式&#xff08;立即生效&#xff09; hostnamectl set-hostname myname 二、网络管理nmcli (NetworkManager command-line interface) nmcli 1、查看网卡 2、设置网卡 dhcp网络工作模式 静态网…

【JVM】Java程序运行时数据区

运行时数据区 运行时数据区是Java程序执行过程中管理的内存区域 Java 运行时数据区组成&#xff08;JVM 内存结构&#xff09; Java 虚拟机&#xff08;JVM&#xff09;的运行时数据区由以下核心部分组成&#xff1a; 线程私有&#xff1a;程序计数器、Java虚拟机栈、本地方…

力扣面试150题--二叉树的层平均值

Day 54 题目描述 思路 初次做法&#xff08;笨&#xff09;&#xff1a;使用两个队列&#xff0c;一个队列存放树的节点&#xff0c;一个队列存放对应节点的高度&#xff0c;使用x存放上一个节点&#xff0c;highb存放上一个节点的高度&#xff0c;sum存放当前层的节点值之和…

机器学习与深度学习01--线性回归

目录 1.什么是线性回归2.如何用数学方式描述简单线性回归模型3.什么是最小二乘法&#xff0c;他有什么作用 1.什么是线性回归 线性回归是⼀种⼴泛⽤于统计学和机器学习中的回归分析⽅法&#xff0c;⽤于建⽴⾃变量&#xff08;特征&#xff09;与因变量&#xff08;⽬标&#…