Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Solution {
- int[][] dirs = {{-1,0},{1,0},{0,-1},{0,1}};
- int R;
- int C;
- public void solve(char[][] board) {
- R = board.length;
- C = R==0?0:board[0].length;
- for(int r = 0; r<R; ++r) {
- if(board[r][0]=='O') {
- fill(board, r, 0);
- }
- if(board[r][C-1]=='O') {
- fill(board, r, C-1);
- }
- }
- for(int c=0; c<C; ++c) {
- if(board[0][c]=='O') {
- fill(board, 0, c);
- }
- if(board[R-1][c]=='O') {
- fill(board, R-1, c);
- }
- }
- for(int r = 0; r<R; ++r) {
- for(int c = 0; c<C; ++c) {
- if(board[r][c]=='O') {
- board[r][c]='X';
- } else if(board[r][c]=='1') {
- board[r][c]='O';
- }
- }
- }
- }
- void fill(char[][]board, int x, int y) {
- board[x][y] = '1';
- for(int[] dir:dirs) {
- if(0<=x+dir[0] && x+dir[0]<R && 0<=y+dir[1] && y+dir[1]<C && board[x+dir[0]][y+dir[1]]=='O') {
- fill(board, x+dir[0], y+dir[1]);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement