【剑指offer】面试题12:矩阵中的路径(Java)
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的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)相关推荐
- 剑指Offer - 面试题12. 矩阵中的路径(DFS回溯)
1. 题目 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么 ...
- 剑指offer面试题12. 矩阵中的路径(矩阵搜索)(深度优先搜索)(剪枝)
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该 ...
- 剑指offer(65)矩阵中的路径
题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...
- (补充)【打印1到最大的n位数】剑指offer——面试题12:打印1到最大的n位数
剑指offer--面试题12:打印1到最大的n位数 此题在牛客网上没有OnlineJudge,在此补充两种做法. 参考网址:https://blog.csdn.net/yanxiaolx/articl ...
- 剑指offer面试题[64]-数据流中的中位数
题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值.如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值. 分 ...
- 剑指offer:面试题12. 矩阵中的路径
题目:矩阵中的路径 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一 ...
- 剑指offer面试题[40]-数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 注意原题目要求空间复杂度为0(1). 位运算的具体思路可以参看剑指offer. class So ...
- 剑指offer面试题[29]-数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. ...
- leetcode —— 面试题12. 矩阵中的路径
请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再 ...
- 剑指offer 回溯法 面试题12 矩阵中的路径 面试题13 机器人的运动范围
题目12 bool has_path_core(char *matrix, int rows, int cols, int row, int col, string a, int &pathl ...
最新文章
- php ecos,php
- 电脑怎样执行编程语言的?
- [AtCoder Educational DP Contest] V - Subtree(树形dp + 前缀积/后缀积)
- poj3335 半平面交
- 前端学习(3091):vue+element今日头条管理-展示编辑文章
- Mac os区别_SN及Mac地址烧录
- docker开放的端口_docker-5-解决宿主机没有开放81端口却可以直接访问docker启动的81端口nginx容器的问题...
- 网络恶意营销账号猖獗,国家网信办出手了
- 突然!锤子科技天猫官方旗舰店商品全线下架 店铺撤店?!
- JQUERY在线引用地址
- iText 实践的目录(the content of iText in Action)
- [lammps教程]OVITO绘制原子运动轨迹线
- dotnetbar 控件使用总结(一)
- 汽车电子技术——传感器感知技术
- 《C语言》2022山西专升本C语言知识点
- Python属性使用@property和不使用@property的差别
- Arduino--4*4矩阵键盘
- 使用C#进行蓝牙开发-接收BLE广播
- 富文本编辑器summernote
- Table ‘表名‘ doesn‘t exist 一个小细节
热门文章
- LeetCode 第 21 场双周赛(779/1913,前40.7%)
- 剑指Offer - 面试题26. 树的子结构(双重递归)
- mysql1033错误存储引擎_MySQL Innodb存储引擎因为缓存配置出现的错误
- Jquery特殊效果
- python randint什么分布_python随机数分布random测试
- 预训练模型对实体的表示能力差?一个简单有效的解法来了!(开源)
- 图灵奖大佬+谷歌团队,为通用人工智能背书!CV 任务也能用 LM 建模!
- 超硬核 ICML’21 | 如何使自然语言生成提速五倍,且显存占用减低99%
- 谈谈工业界落地能力最强的机器学习算法
- 如果有一天,小夕不再萌...