Leetcode 79 单词搜索
解法
典型的深度优先遍历,注意isVisted的置1和置0
代码
class Solution {
public boolean exist(char[][] board, String word) {
int[][] isVisited = new int[board.length][board[0].length];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[0].length; j++) {
if(f(board,isVisited,word,0,i,j)) return true;
}
}
return false;
}
public boolean f(char[][] board, int[][] isVisited, String word, int index, int i, int j) {
if (index==word.length()) return true;
//超过了边界
if (i > board.length-1||j > board[0].length-1||j<0||i<0) return false;
//已经走过了
if (isVisited[i][j] == 1) return false;
if (board[i][j] == word.charAt(index)) {
isVisited[i][j] = 1;//标志为已经走过
//走下一步
if ( !f(board, isVisited, word, index + 1, i, j + 1)
&& !f(board, isVisited, word, index + 1, i, j - 1)
&& !f(board, isVisited, word, index + 1, i + 1, j)
&& !f(board, isVisited, word, index + 1, i - 1, j)){
isVisited[i][j]=0;
return false;
}
} else return false;
return true;
}
}代码总结 文章被收录于专栏
典型的代码,以及自己的想法
OPPO成长空间 955人发布