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

【LeetCode】剑指 Offer(6)

目录

写在前面:

题目:剑指 Offer 12. 矩阵中的路径 - 力扣(Leetcode)

题目的接口:

解题思路:

代码:

过啦!!!

写在最后:


写在前面:

军训好累.......

题目:剑指 Offer 12. 矩阵中的路径 - 力扣(Leetcode)

题目的接口:

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {}
};

解题思路:

这道题不算很难,一眼看过去,

一下就能想到这就是用深度优先搜索(DFS),

说人话其实就是全部递归遍历一遍就行,

与所需字符串对应,符合要求就递归下去,不符合就返回。

只要注意一下细节上的问题就行。(注意走回头路这种情况)

具体思路:

1. 遍历整个矩阵

2. 通过递归判断矩阵中的每一个字符是否能够串成题目要求的字符串

3. 如果匹配成功返回true,如果匹配失败则返回false。

代码:

class Solution {
public:bool exist(vector<vector<char>>& board, string word) {//矩阵的长和宽row = board.size(); col = board[0].size();//遍历整个矩阵for(int i = 0;i<row;i++){for(int j = 0;j<col;j++){//递归搜索是否存在与题目要求相同的字符串if(dfs(board, word, i, j, 0)){return true;}}}return false;}//可以建一个地方存放私有成员,方便我们访问
private://初始化int row, col;//递归函数的实现// k 是用来做为字符串word的下标的bool dfs(vector<vector<char>>& board, string word, int i, int j, int k){//如果出现越界或者匹配失败,返回falseif(i >= row || i < 0 || j >= col || j < 0 || board[i][j] != word[k]){return false;}//如果目标字符已经匹配完了,返回trueif(k == word.size() - 1){return true;}//细节:为了防止“走回头路”这种情况发生,改变位置原字符board[i][j] = '\0';//四个角度递归搜索,不符合条件返回false,符合的继续递归bool res = dfs(board, word, i + 1, j, k + 1) || dfs(board, word, i, j + 1, k + 1) || dfs(board, word, i - 1, j, k + 1) || dfs(board, word, i, j - 1, k + 1);//搜素完后可以将原字符变回原样board[i][j] = word[k];//返回最后递归的结果return res;}
};

过啦!!!

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。

http://www.lryc.cn/news/14701.html

相关文章:

  • 论文投稿指南——中文核心期刊推荐(法律)
  • Qt音视频开发15-动态切换解码内核的设计
  • concurrent-map 和 sync.Map,我该选择哪个?
  • 华为OD机试 - 最少数量线段覆盖| 机试题算法思路 【2023】
  • 【蓝桥集训】第五天——递推
  • qnx的网络知识记录
  • 【Vue/基础知识】Vue基础知识(一)
  • Iceberg实战踩坑指南
  • 预告|2月25日 第四届OpenI/O 启智开发者大会昇腾人工智能应用专场邀您共启数字未来!
  • UnRaid虚拟机安装OpenWrt软路由
  • 开发日记-lombok
  • Web3中文|2023年zk赛道爆发,即将推出的Polygon zkEVM有多重要?
  • 【自然语言处理】主题建模:Top2Vec(理论篇)
  • 【ICLR 2022】重新思考点云中的网络设计和局部几何:一个简单的残差MLP框架
  • 《MySQL学习》 count(*) 原理
  • 时间序列数据预测的类型
  • sk_buff结构体成员变量说明
  • springbatch设置throttle-limit参数不生效
  • 用 tensorflow.js 做了一个动漫分类的功能(一)
  • 看完这篇Vue-element-admin,跟面试官聊骚没问题
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(5)
  • 基于Java+SpringBoot+Vue+Uniapp前后端分离商城系统设计与实现
  • 新建ES别名 添加别名 切换别名
  • MySQL —— 内外连接
  • EXCEL中文本和数字的相互转换方法
  • React源码分析6-hooks源码
  • Windows10神州网信政府版麦克风、摄像头的使用
  • 微机原理学习总结0:前言
  • LeetCode 1828. 统计一个圆中点的数目
  • Spring Boot + Vue3 前后端分离 实战 wiki 知识库系统<一>---Spring Boot项目搭建