题解方法
深度优先搜索
终止条件
- 数组越界
- 当前位置已访问
- 当前字符与目标字符不匹配
匹配条件
搜索步骤
- 标记当前位置为已访问
- 递归次数自增
- 向当前位置的四个方向继续搜索
- 回溯,标记当前位置为未访问
核心代码
深度优先搜索
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| private boolean dfs(int i, int j, int idx) { if (i < 0 || i >= m || j < 0 || j >= n || visited[i][j] || board[i][j] != word.charAt(idx)) { return false; } if (idx == word.length() - 1) { return true; } visited[i][j] = true; idx++; boolean res = dfs(i + 1, j, idx) || dfs(i - 1, j, idx) || dfs(i, j + 1, idx) || dfs(i, j - 1, idx); visited[i][j] = false;
return res; }
|
题目来源
剑指 Offer 12. 矩阵中的路径 - 力扣(LeetCode)