# Middle-题目125：130. Surrounded Regions

Given a 2D board containing ‘X’ and ‘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

DFS和BFS都行，只要对边缘的’O’搜索即可，搜索到的’O’都改成’B’，最后再遍历整个矩阵，把’O’改成’X’,把’B’改成’O’即可。（ac代码用的是BFS）

public class Solution {
private class Point {
int x;
int y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
}
public void solve(char[][] board) {
if (board == null || board.length == 0)
return;
int rows = board.length, columns = board[0].length;
int[][] direction = { { -1, 0 }, { 1, 0 }, { 0, 1 }, { 0, -1 } };
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if ((i == 0 || i == rows - 1 || j == 0 || j == columns - 1) && board[i][j] == 'O') {
board[i][j] = 'B';
queue.offer(new Point(i, j));
while (!queue.isEmpty()) {
Point point = queue.poll();
for (int k = 0; k < 4; k++) {
int x = direction[k][0] + point.x;
int y = direction[k][1] + point.y;
if (x >= 0 && x < rows && y >= 0 && y < columns && board[x][y] == 'O') {
board[x][y] = 'B';
queue.offer(new Point(x, y));
}
}
}
}
}
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
if (board[i][j] == 'B')
board[i][j] = 'O';
else if (board[i][j] == 'O')
board[i][j] = 'X';
}
}
}
}

12ms,beats 38.36%,众数7ms,9.03%
Cmershen的碎碎念：

• 本文已收录于以下专栏：

## [leetcode-130]Surrounded Regions(java)

• zdavb
• 2015年08月12日 20:39
• 885

## (LeetCode 130)Surrounded Regions(并查集)

Q: Given a 2D board containing ‘X’ and ‘O’, capture all regions surrounded by ‘X’.A region is captu...
• u014616233
• 2016年04月20日 22:07
• 1695

## 130 Surrounded Regions

• ChilseaSai
• 2015年12月21日 22:43
• 1006

## LeetCode（130） Surrounded Regions

• fly_yr
• 2016年08月15日 22:04
• 1048

## [LeetCode]130.Surrounded Regions

Given a 2D board containing ‘X’ and ‘O’, capture all regions surrounded by ‘X’.A region is captured ...
• SunnyYoona
• 2015年02月06日 22:28
• 1598

## Leetcode Surrounded Regions 解题报告

http://oj.leetcode.com/problems/surrounded-regions/ Given a 2D board containing 'X' and 'O', captur...
• worldwindjp
• 2014年02月15日 20:57
• 4589

## LeetCode *** 130. Surrounded Regions

• treeshy
• 2016年04月27日 15:38
• 102

## LeetCode 130. Surrounded Regions

• u014674776
• 2015年02月15日 11:01
• 516

## Leetcote 130. Surrounded Regions

130. Surrounded Regions 题目要求： 在一个二维平面上有至少被'0'或者'X'填满，要求当‘O’被'X包围时：除非'O'就在边界或者'O'临近的'O'也在边界，否则将被‘P’代替...
• yanerhao
• 2017年05月18日 22:32
• 168

## 130. Surrounded Regions（BFS）

• u011539372
• 2016年08月21日 23:22
• 69

举报原因： 您举报文章：Middle-题目125：130. Surrounded Regions 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)