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

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;}};

相关文章:

  • 【linux】简单的shell脚本练习
  • 开源模型应用落地-工具使用篇-从零开始搭建Qdrant Web UI-可视化管理工具-Windows(十)
  • 《第一章-初入江湖》 C++修炼生涯笔记(基础篇)C++初识
  • Doris catalog操作
  • 国标28181卡顿问题现场诊断报告
  • gbase8s之MyBatis批量update问题
  • WPF--Application.Current.Dispatcher.BeginInvoke
  • 人工智能之数学基础:如何将二次型转换为标准型?
  • QMainWindow、QDialog 和 QWidget区别
  • 一文读懂:晶振不同等级的差异及对应最佳应用场景
  • leetcode 2616. 最小化数对的最大差值 中等
  • 软考 系统架构设计师系列知识点之杂项集萃(88)
  • springboot+vue大文件断点续传
  • 前端JavaScript面试题(2)
  • Promise(async、await)
  • 非本地地址调用摄像头需要https
  • Coze扣子 - AI生成数字人口播视频
  • 多环境开发配置,Spring boot
  • 【leetcode】101. 对称二叉树
  • Mysql 忘记密码后如何修改
  • 网站微信分享链接怎么做的/优化大师在哪里
  • 内部网站建设教程/百度竞价软件哪个好
  • 有什么做兼职的好的网站/收录查询站长工具
  • 深圳分销网站建设/网站优化外包费用
  • 手机怎样设计网站建设/成都品牌推广
  • 杭州响应式网站制作/网页设计代码大全