leetcode —— 面试题12. 矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。
[[“a”,“b”,“c”,“e”],
[“s”,“f”,“c”,“s”],
[“a”,“d”,“e”,“e”]]
但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ju-zhen-zhong-de-lu-jing-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
————————————————
class Solution:def exist(self, board: List[List[str]], word: str) -> bool:if not board:return Falseif not word:return Truerows = len(board)cols = len(board[0])flag = [[0 for _ in range(cols)] for _ in range(rows)] # 用于标记是否已经检索过def func(matrix,string,lens,nr,nc): # 深度优先遍历,判断字符串是否可达if lens == len(string): # 递归停止条件,当遍历到最后一个元素之后,就可证明字符串是可大的return Truehaspath = False if 0<=nr<rows and 0<=nc<cols and board[nr][nc]==string[lens] and flag[nr][nc]==0: # 当前字符是否满足条件flag[nr][nc]=1 # 如果未被检索同时符合要求lens+=1 # 遍历下一个元素haspath = func(matrix,string,lens,nr-1,nc) or func(matrix,string,lens,nr+1,nc) or func(matrix,string,lens,nr,nc-1) or func(matrix,string,lens,nr,nc+1) # 使用递归函数if not haspath: # 如果找不到符合的字符,使用回溯lens-=1flag[nr][nc]=0return haspath # 字符串是否可达的标志strs = 0for i in range(rows):for j in range(cols):if func(board,word,strs,i,j):return Truereturn False
leetcode —— 面试题12. 矩阵中的路径相关推荐
- 剑指offer:面试题12. 矩阵中的路径
题目:矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一 ...
- 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)
1. 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...
- 剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...
- 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围
题目12 bool has_path_core(char *matrix, int rows, int cols, int row, int col, string a, int &pathl ...
- LeetCode-剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径 思路一:DFS+回溯 DFS 解析: 递归参数: 当前元素在矩阵 board 中的行列索引 i 和 j ,当前目标字符在 word 中的索引 k . 终止条件: ...
- 【算法】剑指 Offer 12. 矩阵中的路径
文章目录 1.概述 2.我的算法 2.1 棋盘 2.1 开始节点 2.2 点没被访问 2.3 点是否在棋盘内 2.4 下一步 2.5 主方法 2.6 核心方法 2.7 测试类 3.leecode1 1 ...
- 【附可运行代码】剑指 Offer 12. 矩阵中的路径
立志用最少的代码做最高效的表达 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字 ...
- 剑指offer——12.矩阵中的路径(不熟)
题目: 题1:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩 ...
- 剑指 Offer 12. 矩阵中的路径
这里使用了回溯算法,回溯算法是一种比较特别的DFS,它需要在达到搜索条件后,回溯上一次,继续搜索.普通的DFS适合找路径是否存在的问题,而回溯算法适合解决有几条路径的问题. 这里给出DFS的模板 df ...
最新文章
- 如何理解矩阵的特征向量和特征值?
- [转]解读Unity中的CG编写Shader系列3——表面剔除与剪裁模式
- Window7+vs2008+QT环境搭建
- ASP.NET MVC Music Store教程(2):控制器
- InnoDB原理篇:Change Buffer是如何提升索引性能的?
- [Hadoop]在Windows上安装Hadoop
- sweetalert2不相应回车_你还不知道的SketchUp建模小技能
- 本周没有学习,估计用脑过度...
- 关于CVE-2020-14882,你需要知道的都在这里
- 【青梅快讯】惊喜不断,Greenplum 最新版本 6.13.0已发布
- AE MG动画脚本motion2 脚本使用方法学习笔记
- 计算机windows用户名密码怎么查,电脑密码怎么查看? 从零教你查询方式
- 取得平均薪水最高的部门的部门名称
- BH1621FVC-TR光环境传感器
- Xilinx ISE系列教程(8):读取FPGA芯片唯一ID号
- 在手机装linux客户端,在Linux下安装QQ客户端
- 彻底卸载iNotePad软件
- 坚果云企业版服务器端,企业网盘服务器功能
- Gradle 1.12用户指南翻译——第五十章. 依赖管理
- PixHawk飞控和Mission Planner地面站安装调试
热门文章
- scorm课件学习状态
- 面试:String 常量池
- Javascript - ES6新语法概览
- Hibernate多对多映射 - 连接表
- jQuery操作CSS常见问题
- 使用 XAML 格式化工具:XAML Styler
- sysv-rc-conf --- Linux设置开机自动启动
- C#LeetCode刷题之#653-两数之和 IV - 输入 BST(Two Sum IV - Input is a BST)
- C#LeetCode刷题之#888-公平的糖果交换(Fair Candy Swap)
- php 获取当前页面url_PHP获取URL –如何获取当前页面的完整URL