LeetCode-130
Solution1:
- 遍历边界点, 如果该值为 ‘O’, 则在该处进行递归继续扩展. 并将走过的路程上的点赋值为 ‘*’.
- 遍历整个二维空间, 将所有为 ‘*’ 的赋值为 ‘O’, 其他均为 ‘X’.
Code:
class Solution {
public:
void solve(vector<vector<char>>& board) {
int n = board.size();
if(n == 0) return ;
int m = board[0].size();
if(n <= 2 || m <= 2) return ;
for(int j = 0; j < m; j++) {
if(board[0][j] == 'O') {
board[0][j] = '*';
solveit(0, j, board);
}
if(board[n-1][j] == 'O') {
board[n-1][j] = '*';
solveit(n-1, j, board);
}
}
for(int i = 1; i < n-1; i++) {
if(board[i][0] == 'O') {
board[i][0] = '*';
solveit(i, 0, board);
}
if(board[i][m-1] == 'O') {
board[i][m-1] = '*';