博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
刷题笔记(15)--矩阵中的路径
阅读量:3959 次
发布时间:2019-05-24

本文共 945 字,大约阅读时间需要 3 分钟。

在这里插入图片描述在这里插入图片描述

矩阵搜索类题目,可以使用dfs递归查找;

  • dfs函数作用:返回在矩阵board中,是否存在一个字符串数组word,从第i行j列开始逐个匹配word的每一个元素,若存在返回true,反之返回false;

  • 结束条件:行列超出界限,改元素之前访问过

  • 返回值:对元素上下左右进行递归查找,取其或的布尔结果;

  • 小操作:在子问题的操作上还要考虑一点,我们使用直接修改值的方式来表示矩阵元素已经被访问过,之后递归如果不想受到影响,还需要在得到res结果后复原该位置的元素值,为了下次递归能够访问。 board[i][j] = word[k];

class Solution {
public boolean exist(char[][] board, String word) {
char[] words = word.toCharArray(); for(int i=0;i
= board.length || i < 0 || j < 0 || j >=board[0].length || board[i][j] != word[k]) return false; // 查找成功说明当前字符的索引是word最后一个值的索引 if(k == word.length - 1) return true; // 标记已访问过元素,可以是除了字母外的其他元素 board[i][j] = '8'; // 上下左右的递归去寻找,只要一个true就可以返回。 boolean res = dfs(board,word,i+1,j,k+1) || dfs(board,word,i-1,j,k+1) || dfs(board,word,i,j+1,k+1) || dfs(board,word,i,j-1,k+1); // dfs 之后要还原,不然之后的递归找个锤子 board[i][j] = word[k]; return res; }}

转载地址:http://gsozi.baihongyu.com/

你可能感兴趣的文章
奇妙的JavaScript函数
查看>>
奇妙的JavaScript函数
查看>>
题目:企业SQL面试复习与测试
查看>>
图片的三级缓存机制
查看>>
自定义标签库(Tag library)
查看>>
自定义标签库(Tag library)
查看>>
深入Java集合学习系列(一)
查看>>
深入Java集合学习系列(一)
查看>>
深入Java集合学习系列(二):
查看>>
图解Spring AOP
查看>>
性能调优之Weblogic调优
查看>>
性能调优之性能参数指标
查看>>
POJ3009---冰壶游戏(深搜剪枝+回溯)
查看>>
POJ3669---跳炸弹(广搜)
查看>>
POJ---1384Piggy-Bank (完全背包+装满问题)
查看>>
并查集基础知识
查看>>
POJ1182---食物链(带权并查集~技巧性超强的解法)
查看>>
POJ2492---A Bug's Life(做完食物链,再秒这个)
查看>>
POJ2063---Investment(完全背包)
查看>>
POJ1458---(最长公共子序列最基础题)
查看>>