130. Surrounded Regions

Given a 2D board containing 'X' and 'O' (the letter O), capture all regions surrounded by 'X'.

A region is captured by flipping all 'O's into 'X's in that surrounded region.

For example,

X X X X
X O O X
X X O X
X O X X

 

After running your function, the board should be: 

X X X X
X X X X
X X X X
X O X X

将边界的o存入queue BFS
public class Solution {
    //BFS
    public void solve(char[][] board) {
        if(board.length == 0 || board[0].length == 0)
            return;
        Queue<int[]> queue = new LinkedList<>();
        int rowEdge = 0;
        int colEdge = 0;
        for(int i = 0; i < board.length; i++){
            for(int j = 0 ; j < board[0].length; j++){
                if((i == 0 || i == board.length -1 || j == 0 || j == board[0].length-1) && board[i][j] == 'O'){
                    board[i][j] = '*';
                    queue.add(new int[]{i,j});
                }
            }
        }
        while(!queue.isEmpty()){
            int gate[] = queue.poll();
            int row = gate[0];
            int col = gate[1];
            if(row > 0 && board[row -1][col] == 'O'){
                board[row-1][col] = '*';
                queue.add(new int[]{row-1, col});
            }
            if(col > 0 && board[row][col-1] == 'O'){
                board[row][col-1] = '*';
                queue.add(new int[]{row, col-1});
            }
            if(row < board.length -1 && board[row +1][col] == 'O'){
                board[row+1][col] = '*';
                queue.add(new int[]{row+1, col});
            }
            if(col < board[0].length -1 && board[row][col + 1] == 'O'){
                board[row][col+1] = '*';
                queue.add(new int[]{row, col+1});
            }
        }
        for(int i = 0; i < board.length; i++){
            for(int j = 0 ; j < board[0].length; j++){
                if(board[i][j] == 'O'){
                    board[i][j] = 'X';
                }
                if(board[i][j] == '*'){
                    board[i][j] = 'O';
                }
            }
        }
    }
}

 

posted @ 2016-10-11 08:44  微微程序媛  阅读(122)  评论(0编辑  收藏  举报