Skip to content

Commit dc8a9c8

Browse files
authored
Create Surrounded Regions
1 parent adc5fde commit dc8a9c8

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

Surrounded Regions

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
class Solution {
2+
public void solve(char[][] board) {
3+
if (board.length == 0) return;
4+
int r = board.length, c = board[0].length;
5+
char toFillWith = '*';
6+
7+
for (int i = 0; i < r; i++) {
8+
for (int j = 0; j < c; j++) {
9+
if (i == 0 || i == r - 1 || j == 0 || j == c - 1) {
10+
dfs(board, i, j, 'O', toFillWith);
11+
}
12+
}
13+
}
14+
for (int i = 1; i < r - 1; i++) {
15+
for (int j = 1; j < c - 1; j++) {
16+
if (board[i][j] == 'O') {
17+
dfs(board, i, j, 'O', 'X');
18+
}
19+
}
20+
}
21+
for (int i = 0; i < r; i++) {
22+
for (int j = 0; j < c; j++) {
23+
if (board[i][j] == toFillWith) {
24+
dfs(board, i, j, toFillWith, 'O');
25+
}
26+
}
27+
}
28+
29+
return;
30+
}
31+
32+
public void dfs(char[][] board, int i, int j, char target, char fill) {
33+
if (i >= 0 && i < board.length && j >= 0 && j < board[i].length && board[i][j] == target) {
34+
board[i][j] = fill;
35+
dfs(board, i + 1, j, target, fill);
36+
dfs(board, i, j + 1, target, fill);
37+
dfs(board, i - 1, j, target, fill);
38+
dfs(board, i, j - 1, target, fill);
39+
}
40+
return;
41+
}
42+
}

0 commit comments

Comments
 (0)