请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。

[["a","b","c","e"],
["s","f","c","s"],
["a","d","e","e"]]

但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入这个格子。

示例 1:

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true
示例 2:

输入:board = [["a","b"],["c","d"]], word = "abcd"
输出:false
提示:

1 <= board.length <= 200
1 <= board[i].length <= 200

代码:

class Solution {

public boolean exist(char[][] board, String word) {

if (board == null || board[0] == null || board.length == 0 || board[0].length == 0 || word == null || word.equals("")) {

return false;

}

boolean visited[][] = new boolean[board.length][board[0].length];

for(int i=0;i<board.length;i++)

{

for(int j=0;j<board[0].length;j++)

{

if(board[i][j]==word.charAt(0))

{

if(find(board,word,0,i,j,visited)==true)

{

return true;

}

}

}

}

return false;

}

public boolean find(char[][] board,String word,int index,int i,int j, boolean visited[][])

{

if(index==word.length())

{

return true;

}

if (i < 0 || j < 0 || i == board.length || j == board[0].length || visited[i][j] || board[i][j] != word.charAt(index)) {

return false;

}

visited[i][j] = true;

boolean x =  find(board,word,index+1,i-1,j,visited)||find(board,word,index+1,i,j-1,visited)||find(board,word,index+1,i+1,j,visited)||find(board,word,index+1,i,j+1,visited);

visited[i][j] = false;

return x;

}

}

【剑指offer】面试题12:矩阵中的路径(Java)相关推荐

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

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

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

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

  3. 剑指offer(65)矩阵中的路径

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

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

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

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

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

  6. 剑指offer:面试题12. 矩阵中的路径

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

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

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

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

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

  9. leetcode —— 面试题12. 矩阵中的路径

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

  10. 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围

    题目12 bool has_path_core(char *matrix, int rows, int cols, int row, int col, string a, int &pathl ...

最新文章

  1. php ecos,php
  2. 电脑怎样执行编程语言的?
  3. [AtCoder Educational DP Contest] V - Subtree(树形dp + 前缀积/后缀积)
  4. poj3335 半平面交
  5. 前端学习(3091):vue+element今日头条管理-展示编辑文章
  6. Mac os区别_SN及Mac地址烧录
  7. docker开放的端口_docker-5-解决宿主机没有开放81端口却可以直接访问docker启动的81端口nginx容器的问题...
  8. 网络恶意营销账号猖獗,国家网信办出手了
  9. 突然!锤子科技天猫官方旗舰店商品全线下架 店铺撤店?!
  10. JQUERY在线引用地址
  11. iText 实践的目录(the content of iText in Action)
  12. [lammps教程]OVITO绘制原子运动轨迹线
  13. dotnetbar 控件使用总结(一)
  14. 汽车电子技术——传感器感知技术
  15. 《C语言》2022山西专升本C语言知识点
  16. Python属性使用@property和不使用@property的差别
  17. Arduino--4*4矩阵键盘
  18. 使用C#进行蓝牙开发-接收BLE广播
  19. 富文本编辑器summernote
  20. Table ‘表名‘ doesn‘t exist 一个小细节

热门文章

  1. LeetCode 第 21 场双周赛(779/1913,前40.7%)
  2. 剑指Offer - 面试题26. 树的子结构(双重递归)
  3. mysql1033错误存储引擎_MySQL Innodb存储引擎因为缓存配置出现的错误
  4. Jquery特殊效果
  5. python randint什么分布_python随机数分布random测试
  6. 预训练模型对实体的表示能力差?一个简单有效的解法来了!(开源)
  7. 图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!
  8. 超硬核 ICML’21 | 如何使自然语言生成提速五倍,且显存占用减低99%
  9. 谈谈工业界落地能力最强的机器学习算法
  10. 如果有一天,小夕不再萌...