【剑指Offer 12】矩阵中的路径

一给  金牌会员 | 2022-8-12 21:06:39 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 748|帖子 748|积分 2244

  1. /**
  2. * 剑指 Offer 12. 矩阵中的路径
  3. * https://leetcode.cn/problems/ju-zhen-zhong-de-lu-jing-lcof/
  4. *
  5. * 思路:深度优先搜索
  6. * */
  7. public class Solution {
  8.     private char[][] board;
  9.     private String word;
  10.     private int m;
  11.     private int n;
  12.     private boolean[][] marked;
  13.     public boolean exist(char[][] board, String word) {
  14.         this.board = board;
  15.         this.word = word;
  16.         m = board.length;
  17.         n = board[0].length;
  18.         marked = new boolean[m][n];
  19.         for (int i = 0; i < m; i++) {
  20.             for (int j = 0; j < n; j++) {
  21.                 if (board[i][j] != word.charAt(0)) {
  22.                     continue;
  23.                 }
  24.                 if(dfs(i, j, 0)) {
  25.                     return true;
  26.                 }
  27.             }
  28.         }
  29.         return false;
  30.     }
  31.     private boolean dfs(int i, int j, int index) {
  32.         if (index == word.length()) {
  33.             return true;
  34.         }
  35.         if (i < 0 || i >= m || j < 0 || j >= n) {
  36.             return false;
  37.         }
  38.         if (marked[i][j] == true || board[i][j] != word.charAt(index)) {
  39.             return false;
  40.         }
  41.         marked[i][j] = true;
  42.         index++;
  43.         boolean result = dfs(i + 1, j, index)
  44.                 || dfs(i - 1, j, index)
  45.                 || dfs(i, j + 1, index)
  46.                 || dfs(i, j - 1, index);
  47.         marked[i][j] = false;
  48.         return result;
  49.     }
  50. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表