zoukankan      html  css  js  c++  java
  • 剑指 Offer 12. 矩阵中的路径

    public boolean exist(char[][] board, String word) {
            int m = board.length;
            int n = board[0].length;
            boolean[][] visited = new boolean[m][n];
            int len = word.length();
            int k = 0;
            for(int i = 0;i<m;i++){
                for(int j = 0;j<n;j++){
                    if(board[i][j] == word.charAt(0)){
                        if(find(i,j,m,n,len,k,board,word,visited)){
                            return true;
                        }
                    }
                }
            }
            return false;
        }
    
        private boolean find(int i, int j, int m, int n,int len, int k, char[][] board, String word, boolean[][] visited) {
            //搜索该位置的上(i-1,j)下(i+1,j)左(i,j-1)右(i,j+1),看是否能找到下一个字符
            if(i<0 || i>=m || j<0 || j>=n) return false;
            if(!visited[i][j]){
                if(board[i][j] == word.charAt(k)) {
                    if(k == len-1) return true;
                    if(i>0){
                        visited[i][j] = true;
                        if(find(i - 1, j, m, n, len, k + 1,board,word,visited)){
                            return true;
                        }
                        visited[i][j] = false;
                    }
                    if(i<m-1){
                        visited[i][j] = true;
                        if(find(i + 1, j, m, n, len, k + 1,board,word,visited)){
                            return true;
                        }
                        visited[i][j] = false;
                    }
                    if(j>0){
                        visited[i][j] = true;
                        if(find(i, j - 1, m, n, len, k + 1,board,word,visited)){
                            return true;
                        }
                        visited[i][j] = false;
                    }
                    if(j<n-1){
                        visited[i][j] = true;
                        if(find(i, j + 1, m, n, len, k + 1,board,word,visited)){
                            return true;
                        }
                        visited[i][j] = false;
                    }
                }
            }
            return false;
        }

    我的前方是万里征途,星辰大海!!
  • 相关阅读:
    intellij idea 将taskRequest.java文件识别为文本文档
    react 学习笔记2
    react 学习笔记1
    webpack4 配置笔记(转自掘金)
    音乐播放之进度条-自定义
    EBS
    Python 学习笔记
    Form 电子表格(JTF GRID)
    Form 中实现历史记录查询
    Form 去掉使用格式掩码带来的多余字符
  • 原文地址:https://www.cnblogs.com/taoyuxin/p/13453886.html
Copyright © 2011-2022 走看看