题目描述
给定一个二维的矩阵,包含 ‘X’ 和 ‘O’(字母 O)。
找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。
示例:
X X X X
X O O X
X X O X
X O X X
运行你的函数后,矩阵变为:
X X X X
X X X X
X X X X
X O X X
总结
SDC1:DFS,想不到效率还挺高的,还是那句话,先实现,再优化。
SDC2:并查集,虽然效率不高,但真的是一种很好的思路。
Sample Code 1
class Solution {
public void solve(char[][] board) {
if (board.length == 0) return;
int rows = board.length;
int cols = board[0].length;
for (int i = 0; i < cols; i++) {
// if (board[0][i] == 'O')
dfs(0, i, board);
// if (board[board.length - 1][i] == 'O')
dfs(board.length - 1, i, board);
}
for (int i = 1; i < rows - 1; i++) {
// if (board[i][0] == 'O')
dfs(i, 0, board);
// if (board[i][board[0].length - 1] == 'O')
dfs(i, board[0].length - 1, board);
}
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++)