Leetcode: Surrounded Regions

来源:互联网 发布:origin散点显示数据值 编辑:程序博客网 时间:2024/05/18 20:05

url

https://leetcode.com/problems/surrounded-regions/description/

描述

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’放入队列,然后把队列中的‘O’遍历,把其四周的‘O’也进行遍历。

示例

static class Point{        int x, y;        Point(int x,int y){            this.x = x;            this.y = y;        }    }    int[]dx={-1,1,0,0};    int[]dy={0,0,-1,1};    public void solve(char[][] board) {        Queue<Point> queue = new LinkedList<>();        int h = board.length;        int w = board[0].length;        for(int i=0;i<h;i++){            if(board[i][0]=='O'){                queue.add(new Point(i,0));                board[i][0] = '+';            }            if(board[i][w-1]=='O'){                queue.add(new Point(i,w-1));                board[i][w-1] = '+';            }        }        for(int i=0;i<w;i++){            if(board[0][i]=='O'){                queue.add(new Point(0,i));                board[0][i] = '+';            }            if(board[h-1][i]=='O'){                queue.add(new Point(h-1,i));                board[h-1][i] = '+';            }        }        while(!queue.isEmpty()){            Point p = queue.poll();            int x,y;            for(int i=0;i<4;i++){                x = p.x+dx[i];                y = p.y+dy[i];                if(x>=0&&x<h&&y>=0&&y<w&&board[x][y]=='O'){                    board[x][y] = '+';                    queue.add(new Point(x,y));                }            }        }        for(int i=0;i<h;i++){            for(int j=0;j<w;j++){                if(board[i][j]=='O'){                    board[i][j] = 'X';                }                if(board[i][j]=='+'){                    board[i][j] = 'O';                }            }        }    }
原创粉丝点击