您的位置:首页 > 其它

Leetcode 130. Surrounded Regions

2016-06-29 20:14 155 查看
首先遍历矩阵四边的每个‘O',然后对于每个’O‘进行深搜,寻找每个相互连接的’O‘并且赋值为’e'。
遍历矩阵的每个元素,将‘O'改为’X‘,将’e‘改为’O‘。
class Solution{
public:
void bfs(vector<vector<char>> &board, int r, int c)
{
board[r][c] = 'e';
if (r-1 >= 0 && board[r-1][c] == 'O')
{
bfs(board, r-1, c);
}
if (r + 1 <= board.size() - 1 && board[r + 1][c] == 'O')
{
bfs(board, r + 1, c);
}
if (c - 1 >= 0 &&  board[r][c - 1] == 'O')
{
bfs(board, r, c - 1);
}
if (c + 1 <= board[0].size() - 2 && board[r][c + 1] == 'O')
{
bfs(board, r, c + 1);
}
}
void solve(vector<vector<char>> &board) {
if (board.size() == 0 || board[0].size() == 0)
return;
else if (board.size() <= 2 || board[0].size() <= 2)
return;
else
{
for (int i = 0; i < board[0].size(); i++)
{
if (board[0][i] == 'O')
bfs(board, 0, i);
if (board[board.size() - 1][i] == 'O')
bfs(board, board.size() - 1, i);
}
for (int i = 0; i < board.size(); i++)
{
if (board[i][0] == 'O')
bfs(board, i, 0);
if (board[i][board[0].size()- 1] == 'O')
bfs(board, i, board[0].size() - 1);
}
for (int i = 0; i < board.size(); i++)
{
for (int j = 0; j < board[0].size(); j++)
{
if (board[i][j] == 'e')
{
board[i][j] = 'O';
}
else
{
board[i][j] = 'X';
}
}
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: