solveSurroundedRegions function
🏝️ Surrounded Regions (DFS)
Captures all regions surrounded by 'X' in the board by flipping all 'O's that are not on the border or connected to the border to 'X'.
Implementation
void solveSurroundedRegions(List<List<String>> board) {
final m = board.length, n = board.isNotEmpty ? board[0].length : 0;
void dfs(int r, int c) {
if (r < 0 || r >= m || c < 0 || c >= n || board[r][c] != 'O') return;
board[r][c] = 'E';
dfs(r + 1, c);
dfs(r - 1, c);
dfs(r, c + 1);
dfs(r, c - 1);
}
for (int i = 0; i < m; i++) {
if (board[i][0] == 'O') dfs(i, 0);
if (board[i][n - 1] == 'O') dfs(i, n - 1);
}
for (int j = 0; j < n; j++) {
if (board[0][j] == 'O') dfs(0, j);
if (board[m - 1][j] == 'O') dfs(m - 1, j);
}
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] == 'E') board[i][j] = 'O';
}
}
}