题目描述

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。
[[“a”,“b”,“c”,“e”],
[“s”,“f”,“c”,“s”],
[“a”,“d”,“e”,“e”]]
但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。

思路

详见链接

代码

class Solution:def exist(self, board:List[List[str]],word:str)->bool:def dfs(i,j,k):if not i<=len(board)<j or not i<=len(board[0])<j or board[i][j] != word[k]:return Falseif k = len(word)-1:return Truetmp, board[i][j] = board[i][j], '/'res = dfs(i+1,j,k+1) or dfs(i-1,j,k+1) or dfs(i,j+1,k+1) or dfs(i,j-1,k+1)borad[i][j] = tmpreturn resfor i in range(len(board)):for j in range(len(board[0])):if dfs(i, j ,0):return Truereturn False

剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)相关推荐

  1. (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数

    剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...

  2. 剑指offer面试题[64]-数据流中的中位数

    题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 分 ...

  3. 剑指offer面试题[40]-数组中只出现一次的数字

    题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...

  4. 剑指offer面试题[29]-数组中出现次数超过一半的数字

    题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...

  5. 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)

    1. 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...

  6. 剑指Offer - 面试题61. 扑克牌中的顺子

    1. 题目 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14. 示 ...

  7. 剑指Offer - 面试题22. 链表中倒数第k个节点(快慢指针)

    1. 题目 输入一个链表,输出该链表中倒数第k个节点.为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点.例如,一个链表有6个节点,从头节点开始,它们的值依次是1.2.3.4.5 ...

  8. 剑指offer 面试题61. 扑克牌中的顺子

    从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14. 示例 1: 输 ...

  9. 剑指offer面试题61. 扑克牌中的顺子(排序)(遍历)

    题目描述 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大.小王为 0 ,可以看成任意数字.A 不能视为 14. 思路 ...

最新文章

  1. 关注度越来越高的行人重识别,有哪些热点?
  2. tf.assign()函数简单解释
  3. java的ZipOutputStream压缩文件的两个问题(乱码和每次zip后文件md5变化)
  4. 数据挖掘的相关知识例子
  5. java 在已有的so基础上封装jni_[干货]再见,Android JNI 封装
  6. 微服务架构到底是什么鬼?
  7. 六、面向对象编程——类和对象
  8. 图解CSS3----4-结构伪类选择器
  9. 物联网来了,智能城市离我们还有多远?
  10. sql server 性能优化
  11. Obsidian使用手册
  12. c++ 时间类型详解(time_t和tm)
  13. CS231n 课程(笔记内容 by Aries.Y)
  14. 程序员删库后发同学群问如何恢复,同学:跑路吧,记得跑快点
  15. 如何科学增长邮件订阅用户?
  16. DataList绑定照片并分页
  17. 建模配置 | Revit建模到底需要什么配置
  18. VOL框架学习(一)从零开始搭建项目
  19. 页面快速原型工具推荐
  20. 如何使用命令打开一些常用软件

热门文章

  1. in use 大学英语4word_《新视野大学英语4网络测试题unit6++Microsoft+Word+文档》.doc
  2. python等待时间1009python等待时间_Python之学习Selenium(四):固定的休眠时间、隐式等待和显示等待...
  3. 基于命令行编译打包phonegap for android应用
  4. [JS3] 立即执行JS
  5. 你知道怎么离线安装全局 node 模块吗?
  6. IE安全增强性无法禁用的处理过程
  7. HDU-1255 覆盖的面积 矩形面积交
  8. html 英文字母不换行,css如何设置英文单词不换行?
  9. vc++图形编程基础
  10. c语言中动态数组的实现