1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| class Solution { public void solve(char[][] board) { int m = board.length, n = board[0].length;
for (int j = 0; j < n; j++) { dfs(board, m, n, 0, j); dfs(board, m, n, m - 1, j); } for (int i = 0; i < m; i++) { dfs(board, m, n, i, 0); dfs(board, m, n, i, n - 1); }
for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (board[i][j] == 'E') { board[i][j] = 'O'; } else if (board[i][j] == 'O') { board[i][j] = 'X'; } } } }
private void dfs(char[][] board, int m, int n, int i, int j) { if (i < 0 || i >= m || j < 0 || j >= n || board[i][j] == 'X' || board[i][j] == 'E') { return; }
board[i][j] = 'E'; dfs(board, m, n, i + 1, j); dfs(board, m, n, i - 1, j); dfs(board, m, n, i, j + 1); dfs(board, m, n, i, j - 1); } }
|