2022/9/11矩阵中的路径

这篇博客讨论了如何使用深度优先搜索(DFS)解决矩阵中的路径问题。作者强调了迭代器的使用以及在遍历过程中的注意事项,如用空字符串作为已访问标记,避免重复访问同一元素。此外,还指出在判断条件语句中顺序的重要性,以防止数组越界错误。文章还分享了一个将字符串与字符数组相互转换的小技巧。
摘要由CSDN通过智能技术生成

剑指 Offer 12. 矩阵中的路径

使用了深度优先搜索算法,注意迭代器的使用

小知识点:

//字符串转数组
String word  =  "hhh";
char[] words = word.toCharArray();
//字符数组转字符串
char[] arr = { 'a', 'b', 'c' };
String s = String.copyValueOf(arr);

学到的技巧:
这玩意应该表示空字符,可以防止重复使用变量中的值

// 访问过的标记空字符串,“ ”是空格, '\0'是空字符串
// 比如当前为A,没有标记找过,且A是word中对应元素,则此时应该找A下一个元素,假设是B
//在dfs(B)的时候还是要搜索B左边的元素(假设A在B左边),所以就是ABA(凭空多出一个A,A用了2次,不可以
//如果标记为空字符串就不会有这样的问题,因为他们值不相等AB != ABA。 

board[i][j] = '\0';

在做题过程中出现的问题:

//在这个判断语句中出现错误
 if(|| board[i][j]!=words[k] || i>=board.length || i<0 || j>=board[0].length || j<0 )  return false;

//正确写法
if(i>=board.length || i<0 || j>=board[0].length || j<0 || board[i][j]!=words[k])  return false;

就是要注意判断的语句中也有先后顺序,如果先判断board数组元素时会报溢出错误

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值