day65—回溯—单词搜索(LeetCode-79)

题目描述

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

提示:

  • m == board.length
  • n = board[i].length
  • 1 <= m, n <= 6
  • 1 <= word.length <= 15
  • board 和 word 仅由大小写英文字母组成

解决方案:

1、越界检查

2、终止条件:字符符合,字符串长度达到,该位置已遍历

3、单层循环逻辑:pos + 1,上下左右四方向判断

函数源码:

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {if(board.empty())   return false;int m=board.size(),n=board[0].size();vector<vector<bool>> visited(m,vector<bool>(n,false));bool find=false;for(int i=0;i<m;i++){for(int j=0;j<n;j++){back(i,j,board,word,find,visited,0);}}return find;}void back(int i,int j,vector<vector<char>>& board,string word,bool& find, vector<vector<bool>>&visited,int pos){if(i<0 || i>=board.size() || j<0 || j>=board[0].size())     return;if(visited[i][j] || find || board[i][j] != word[pos])       return;if(pos == word.size()-1){find=true;return;}visited[i][j]=true; //已遍历back(i+1,j,board,word,find,visited,pos+1);back(i-1,j,board,word,find,visited,pos+1);back(i,j-1,board,word,find,visited,pos+1);back(i,j+1,board,word,find,visited,pos+1);visited[i][j] = false;}};

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

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

相关文章

iOS安全和逆向系列教程 第19篇:ARM64汇编语言基础与逆向分析

引言 在成功掌握iOS应用脱壳技术后,我们获得了可以进行静态分析的二进制文件。然而,要真正理解iOS应用的底层逻辑,我们必须深入到汇编语言层面。ARM64(也称为AArch64)是苹果在iPhone 5s及以后设备中使用的指令集架构。本篇文章将深入探讨ARM64汇编语言的基础知识,并结合…

使用Gitlab CI/CD结合docker容器实现自动化部署

Gitlab CI/CD基本介绍 核心概念 持续集成&#xff08;CI&#xff09;&#xff1a;每次代码提交后自动触发构建、测试和代码检查&#xff0c;确保代码质量 持续交付/部署&#xff08;CD&#xff09;&#xff1a;在 CI 基础上自动将代码部署到测试或生产环境&#xff0c;支持人工…

初学者运行Pycharm程序可能会出现的问题,及解决办法

文章目录 前言一、ModuleNotFoundError: No module named sklearn二、ImportError: cannot import name show_config from numpy (unknown location)三、Pycharm报错&#xff1a;“Original error was: DLL load failed: 找不到指定的模块“ 的解决办法四、ImportError: cannot…

Android开发中的Java与Kotlin:全面对比与深度解析

Android开发中的Java与Kotlin&#xff1a;全面对比与深度解析 在Android开发领域&#xff0c;Java和Kotlin是两种主流编程语言。自Google在2017年宣布Kotlin为Android官方支持语言以来&#xff0c;Kotlin凭借其现代语法特性和与Java的无缝兼容性&#xff0c;逐渐成为开发者的新…

为应对激烈竞争环境,IBMS系统如何提升企业管理效率

IBMS智能管理系统&#xff1a;赋能企业高效运营&#xff0c;决胜竞争新时代 在瞬息万变的商业环境中&#xff0c;效率就是竞争力&#xff01;企业如何快速响应市场变化、优化内部流程、降低成本并实现精准决策&#xff1f;IBMS智能管理系统以创新科技为引擎&#xff0c;为企业…

2.3 ASPICE的架构与设计

在ASPICE中&#xff0c;架构与设计是汽车软件开发过程中非常重要的一环&#xff0c;它涉及到定义和设计软件系统的整体结构、组件以及其相互关系。良好的架构与设计可以帮助团队更好地理解和管理软件系统&#xff0c;提高系统的可维护性、可扩展性和性能。以下是ASPICE中架构与…

生益PCB耐高温PCB板材怎么样?

在5G基站昼夜不停地吞吐数据时&#xff0c;在新能源汽车电池管理系统经受极寒酷暑考验时&#xff0c;在航空航天器穿越大气层承受2000℃热浪冲击时&#xff0c;一块优质PCB板材的“抗热基因”正在决定着整个系统的生死存亡。生益科技研发的耐高温PCB板材&#xff0c;正是在这场…

Java Spring ApplicationEvent 概述

一、Spring 事件机制核心概念 1. 事件驱动架构模型 发布-订阅模式&#xff1a;解耦事件生产者和消费者观察者模式&#xff1a;监听器监听特定事件事件驱动优势&#xff1a; 组件间松耦合系统扩展性好支持异步处理事件溯源支持 2. 核心组件 组件作用实现方式ApplicationEve…

Spring核心框架完全指南 - 基础知识全解析

📖 目录 🌟 Spring框架简介 🏗️ IoC容器详解 💉 依赖注入(DI)深入理解 ⚙️ Bean配置与管理 🎯 Bean的作用域 🔄 Bean生命周期 🎭 面向切面编程(AOP) 📝 Spring注解详解 📁 资源管理 📢 事件机制 🔤 SpEL表达式语言 🎯 实战案例 📚 总…

Parasoft C++Test软件集成测试(部件测试)_操作指南

系列文章目录 Parasoft C++Test软件静态分析:操作指南(编码规范、质量度量)、常见问题及处理 Parasoft C++Test软件单元测试:操作指南、实例讲解、常见问题及处理 Parasoft C++Test软件集成测试:操作指南、实例讲解、常见问题及处理 进阶扩展:自动生成静态分析文档、自动…

聊一聊 Linux 上对函数进行 hook 的两种方式

一&#xff1a;背景 1. 讲故事 前两篇我们介绍了 Minhook 在 Windows 平台上的强大功效&#xff0c;这一篇我们来聊一聊如何在 Linux 上对函数进行hook&#xff0c;这里介绍两种方式。 轻量级的 LD_PRELOAD 拦截 LD_PRELOAD是一种共享库拦截&#xff0c;这种方式的优点在于…

【免费分享】GWO-BP-AdaBoost预测!灰狼优化、人工神经网络与AdaBoost集成学习算法预测研究

一、模型组成原理 1. 灰狼优化算法&#xff08;GWO&#xff09; 核心思想&#xff1a;模拟灰狼群体的社会等级和狩猎行为&#xff08;包围、跟踪、攻击猎物&#xff09;&#xff0c;通过α、β、δ三级领导层引导种群搜索最优解。算法流程包括&#xff1a; 社会分层&#xff…

matlab实现非线性Granger因果检验

matlab程序包。用于格兰杰因果分析&#xff0c;分析数据时&#xff0c;直接带入数据即可。 hjt2/README , 1804 hjt2/c-code/Makefile , 57 hjt2/c-code/hjt2_tval.c , 10862 hjt2/matlab/spx_rp.dat , 175202 hjt2/matlab/spx_ur.dat , 174522 hjt2/matlab/spx_uv.dat , 1745…

从SQL Server到分布式大数据平台:重构企业数据架构

在企业数字化加速的背景下&#xff0c;越来越多的组织开始意识到&#xff1a;传统的数据系统正逐渐成为增长的“瓶颈”而非“助力”。其中&#xff0c;SQL Server 作为许多企业IT架构中曾经的中坚力量&#xff0c;正面临前所未有的挑战。它曾以稳定、易用、成本可控等优势&…

【网关】互联网公司的接入网关和业务网关怎么设计

网关 网关基础知识 RGW全称 Red GateWay :小红书网关&#xff08;网关英文&#xff1a;Gateway&#xff1b; 接入网关&#xff1a;Access Gateway&#xff09; 网关&#xff08;通用&#xff09;&#xff1a;Gateway 接入网关&#xff1a;API Gateway、Access Gateway 业务网关…

安全虚拟磁盘技术的创新与实践

文章目录 前言一、数据安全保护的新挑战1. 数据安全态势日益严峻&#xff0c;法律法规陆续出台2. 加强数据安全管控成为银行数据安全管理核心之一3. 银行终端数据安全管控存在的难题 二、安全虚拟磁盘的探索与实践1. 敏感文件的入盘及操作2. 敏感文件的流转及出盘三、安全虚拟磁…

uni-app项目实战笔记4--使用组件具名插槽slot定义公共标题模块

先来看效果&#xff1a; 如图&#xff0c;“每日推荐”&#xff0c;“专题精选”这些公共标题有相同的地方&#xff0c;也有自己的独特的地方&#xff0c;像这类有共性又有个性的可考虑使用slot插槽来实现。 实现步骤&#xff1a; 1.在前面文章创建的公共组件common-title定义…

Appium + Java 测试全流程

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】

vue3 双容器自动扩展布局 根据 内容的多少 动态定义宽度

需求&#xff1a; 左右两个列表 挨着排列&#xff0c;当左边内容超出滚动条时&#xff0c;换列显示&#xff0c;右边的列表随之移动 效果图&#xff1a; 1.左边数据&#xff1a;10&#xff0c;右边数据&#xff1a;5 2.左边数据&#xff1a;30&#xff0c;右边数据&#xff…

linux-java部署

version: 3 services:nacos_host:image: nacos/nacos-server:v2.2.0restart: alwayscontainer_name: nacos_hostenvironment:- MODEstandalone- PREFER_HOST_MODEhostnamevolumes:- ./sores/nacos/log:/home/nacos/logsports:- 8848:8848- 9848:9848 #2.0新增了两个端口&#x…