Leetcode面试经典150题-79.搜索单词

news/2024/9/20 8:10:00/ 标签: leetcode, 面试, 算法

题目比较简单,回溯最基础的题,记得除非覆盖,否则一定要恢复现场就行

解法都在代码里,不懂就留言或者私信

class Solution {public boolean exist(char[][] board, String word) {int m = board.length; int n = board[0].length;if(m * n < word.length()) {return false;}/**转换成字符数组 */char[] wordArr = word.toCharArray();for(int i = 0; i < board.length; i++) {for(int j = 0; j < board[i].length; j++) {/**任何一个成功,直接返回,这里加一下等于判断提高效率*/if(process(board, wordArr, i , j, 0)) {return true;}}}return false;}public boolean process(char[][] board, char[] wordArr, int row, int col, int curIndex) {if(curIndex == wordArr.length) {return true;}if(row < 0 || row >= board.length || col < 0 || col >= board[row].length || board[row][col] != wordArr[curIndex]) {return false;}/**用过的标记成0(数字0)并在此之前记录原始值,用于失败后的恢复现场*/char orginChar = board[row][col];board[row][col] = '0';/**上下左右都试一下 */boolean up = process(board, wordArr, row - 1, col, curIndex + 1);boolean right = process(board, wordArr, row, col + 1, curIndex + 1);boolean down = process(board, wordArr, row + 1, col, curIndex + 1);boolean left = process(board, wordArr, row, col - 1, curIndex + 1);/**任何一个成功就是成功,不再继续尝试 */if(up || right || down || left) {return true;}/**如果失败了下个需要重新从这个位置开始尝试,这里要恢复现场 */board[row][col] = orginChar;/**失败了返回false */return false;}
}


http://www.ppmy.cn/news/1527930.html

相关文章

JavaScript如何判断输入的是空格

1、JavaScript如何判断输入的是空格 1.1. 使用trim()方法和length属性 trim() 方法可以移除字符串两端的空白字符&#xff08;包括空格、制表符、换行符等&#xff09;&#xff0c;然后检查处理后的字符串长度是否为0。 function isOnlySpaces(str) {return str.trim().lengt…

es由一个集群迁移到另外一个集群es的数据迁移

迁移es的数据 改下index的索引 就可以了。 查询 用curl -u就可以查询了

C# 中Faker

在 C# 中&#xff0c;Faker 类通常用于生成模拟数据&#xff08;也称为虚拟数据、测试数据&#xff09;&#xff0c;这对于开发、测试以及演示应用程序非常有用。一个流行的库叫做 Faker&#xff0c;它提供了一种简单的方式来生成各种随机数据。 安装 Faker 库 要使用 Faker …

VMware安装飞牛私有云fnOS并挂载小雅Alist实现异地远程访问

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java后端性能监控:使用JMX与Java Mission Control的深入解析

Java后端性能监控&#xff1a;使用JMX与Java Mission Control的深入解析 大家好&#xff0c;我是微赚淘客返利系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;在Java后端开发中&#xff0c;性能监控是确保系统稳定和高效运行的关键。…

【Qt网络编程】Tcp多线程并发服务器和客户端通信

目录 一、编写思路 1、服务器 &#xff08;1&#xff09;总体思路widget.c&#xff08;主线程&#xff09; &#xff08;2&#xff09;详细流程widget.c&#xff08;主线程&#xff09; &#xff08;1&#xff09;总体思路chat_thread.c&#xff08;处理聊天逻辑线程&…

stable diffusion 神经网络插件 controlnet 的安装,很详细

stable diffusion 神经网络插件 controlnet 的安装&#xff0c;很详细 一、前言二、下载1、方式一2、方式二 一、前言 学到 stable diffusion 的 controlnet 插件&#xff0c;安装也略微曲折&#xff0c;这里做个记录。 下载前保证 github 能正常访问。 二、下载 1、方式一…

golang学习笔记30——golang 中代码仓库的 h1 和 go.mod h1 不一致的修正方法

推荐学习文档 golang应用级os框架&#xff0c;欢迎stargolang应用级os框架使用案例&#xff0c;欢迎star案例&#xff1a;基于golang开发的一款超有个性的旅游计划app经历golang实战大纲golang优秀开发常用开源库汇总想学习更多golang知识&#xff0c;这里有免费的golang学习笔…

易语言源码用键盘按键代替小键盘写法教程

相信大家都有遇到过一些难题 比方说想用一些软件 但是发现一些软件需要有小键盘的用户才能使用 那么这样就对于一些无小键盘用户造成了困扰&#xff01; 今天就给大家分享一个用易语言写的利用软键盘方法 当按下一个按键启动其他热键的方法 以下为源码写法 .版本 2 .支持库 she…

电气设备施工现场风险状态判断ai模型训练数据集

电气设备施工现场风险状态判断ai模型训练数据集 id:18 电气设备施工现场工人人工智能学习数据和工作环境安全数据&#xff0c;建立系统化管理体系&#xff0c;改变全球EHS范式&#xff0c;预防工业事故。数据集记录了387709例子电力设施建设以及施工现场相关的灾害安全环境数据…

发现的一种很简单的set/get封装办法

参考&#xff1a; C 中简化set/get 函数封装的 方式_c get set-CSDN博客 定义一个模板类 你可以创建一个模板类Property&#xff0c;用于封装设置和获取功能&#xff1a; template<typename T> class Property { private:T value;public:void set(const T& v) {va…

代码随想录算法训练营43期 | Day 21 —— 108.将有序数组转换为二叉搜索树、 538.把二叉搜索树转换为累加树

代码随想录算法训练营 代码随想录算法训练营43期 | Day108.将有序数组转换为二叉搜索树538.把二叉搜索树转换为累加树 代码随想录算法训练营43期 | Day 108.将有序数组转换为二叉搜索树 class Solution { private:TreeNode* traversal(vector<int>& nums, int left…

Java项目实战II基于Java+Spring Boot+MySQL的房屋租赁管理系统的设计与实现

目录 一、前言 二、技术介绍 三、系统实现 四、论文参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市租…

OpenAIAPI报错和ATL延迟优化

Open AI API报错&#xff1a; ————————————————加更———————————————————— 1.API Error: {“error”:{“message”:“无效的令牌”,“type”:“one_api_error”}}/报错403 调用接口不对&#xff0c;openkey的调用需要对应使用https://open…

C#和数据库高级:抽象类和抽象方法

文章目录 一、为什么使用抽象类和抽象方法&#xff1f;1.1、父类与子类的相互转换 二、抽象类和抽象方法2.1、抽象类的定义和方法声明规范2.2、使用继承多态的机制解决问题 三、抽象类的概念和使用特点总结 一、为什么使用抽象类和抽象方法&#xff1f; 1.1、父类与子类的相互…

二十种编程语言庆祝中秋节

二十种编程语言庆祝中秋节 文章目录 二十种编程语言庆祝中秋节中秋快乐&#xff01;家人们 &#x1f973;一 Python二 C三 C四 Java五 C#六 Perl七 Go八 Asp九 PHP十 JavaScript十一 JavaScript HTML十二 Visual Basic十三 早期 VB十四 Visual C十五 Delphi十六 Shell十七 Cobo…

在设计开发中,如何提高网站的用户体验?

在网站设计开发中&#xff0c;提高用户体验是至关重要的。良好的用户体验不仅能提升用户的满意度和忠诚度&#xff0c;还能增加转化率和用户留存率。以下是一些有效的方法和策略&#xff1a; 优化页面加载速度 减少HTTP请求&#xff1a;合并CSS和JavaScript文件以减少HTTP请求…

人工智能——猴子摘香蕉问题

一、实验目的 求解猴子摘香蕉问题&#xff0c;根据猴子不同的位置&#xff0c;求解猴子的移动范围&#xff0c;求解对应的过程&#xff0c;针对不同的目标状态进行求解。 二、实验内容 根据场景有猴子、箱子、香蕉&#xff0c;香蕉挂天花板上。定义多种谓词描述位置、状态等…

深度学习中常见的损失函数

在机器学习和深度学习中&#xff0c;损失函数用于衡量模型预测值与真实值之间的差异。根据任务的类型&#xff08;如回归、分类等&#xff09;&#xff0c;可以使用不同的损失函数。下面列举了一些常见的损失函数&#xff1a; 1. 回归问题中的损失函数 回归任务的目标是预测连…

信息安全数学基础(9)素数的算数基本定理

前言 在信息安全数学基础中&#xff0c;素数的算数基本定理&#xff08;也称为唯一分解定理或算术基本定理&#xff09;是一个极其重要的定理&#xff0c;它描述了正整数如何唯一地分解为素数的乘积。这个定理不仅是数论的基础&#xff0c;也是许多密码学算法&#xff08;如RSA…