130J. Surrounded Regions
https://leetcode.com/problems/surrounded-regions/
DFS
这个题DFS就行,如果想用UnionFind 可以参见2-D Union Find.
class Solution {
public void solve(char[][] board) {
int M = board.length;
if(M < 1) return;
int N = board[0].length;
for(int i = 0; i < M; i++){
for(int j = 0; j < N; j++){
if( i == 0 || i == M - 1 || j == 0 || j == N-1 ){
dfs(board,i,j,'O','M');
}
}
}
for(int i = 0; i < M; i++){
for(int j = 0; j < N; j++){
if( board[i][j] == 'O'){
board[i][j] = 'X';
}
if( board[i][j] == 'M'){
board[i][j] = 'O';
}
}
}
}
private void dfs(char[][] board, int row, int column, char target, char goal){
int M = board.length;
int N = board[0].length;
if(row < 0 || column < 0 || row + 1 > M || column + 1 > N) {
return;
}
char c = board[row][column];
if(c == target){
board[row][column] = goal;
dfs(board, row - 1, column, target,goal);
dfs(board, row , column - 1, target,goal);
dfs(board, row + 1, column, target,goal);
dfs(board, row , column + 1, target,goal);
}else{
return;
}
}
}
Last updated
Was this helpful?