题目要求的是将被'X'包围的'O'替换为‘X’, 则处于边界的‘O’所邻接的'O'均不能被’X‘包围,可以从边界处进行DFS。
代码
class Solution
{
public:
void solve(vector<vector<char>> &board)
{
if(board.empty()||board.size()==0||board[0].size()==0)
return;
int row = board.size();
int col = board[0].size();
for(int i = 0; i < col; ++i)
{
judge4NearNeighbor( board,0,i);
judge4NearNeighbor( board, row-1,i);
}
for(int j = 0; j < row; ++j)
{
judge4NearNeighbor( board,j,0);
judge4NearNeighbor( board, j,col-1);
}
for(int i = 0; i < row; ++i )
for(int j = 0; j < col; ++j)
if(board[i][j]=='Y')
board[i][j] = 'O';
else
board[i][j] = 'X';
}
void judge4NearNeighbor(vector<vector<char>> &board, int i, int j)
{
if(i>=0&&i<=board.size()-1&&j>=0&&j<=board[0].size()-1&&board[i][j]=='O')
{
board[i][j] = 'Y';
judge4NearNeighbor(board, i, j-1);
judge4NearNeighbor(board, i-1, j);
judge4NearNeighbor(board, i, j+1);
judge4NearNeighbor(board, i+1, j);
}
}
};
本文介绍了一种使用深度优先搜索(DFS)算法解决特定问题的方法:将二维矩阵中被'X'包围的'O'替换为'X',而处于边界的'O'所邻接的'O'则不被替换。通过从边界开始遍历,可以有效识别并处理矩阵中的'O'和'X',确保边界'O'不受影响。
504

被折叠的 条评论
为什么被折叠?



