[LeetCode] 130. Surrounded Regions

来源:互联网 发布:电视剧后期制作软件 编辑:程序博客网 时间:2024/05/17 04:03
Given a 2D board containing ‘X’ and ‘O’ (the letter 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 XX O O XX X O XX O X X
After running your function, the board should be:
X X X XX X X XX X X XX O X X


class Solution {public:    void solve(vector<vector<char>>& board) {        if (board.size() == 0) return;        const int m = (int)board.size(), n = (int)board[0].size();        for (int j = 0; j < n; j++) {            DFS(board, m, n, 0, j);            DFS(board, m, n, m - 1, j);        }        for (int i = 1; i + 1 < m; i++) {            DFS(board, m, n, i, 0);            DFS(board, m, n, i, n - 1);        }        for (int i = 0; i < m; i++) {            for (int j = 0; j < n; j++)                board[i][j] = (board[i][j] == '*') ? 'O' : 'X';        }    }private:    void DFS(vector<vector<char>>& board, const int m,  const int n, int i, int j) {        if (board[i][j] != 'O') return;        board[i][j] = '*';        if (i > 1) DFS(board, m, n, i - 1, j);        if (i + 2 < m) DFS(board, m, n, i + 1, j);        if (j > 1) DFS(board, m, n, i, j - 1);        if (j + 2 < n) DFS(board, m, n, i, j + 1);    }};

这里写图片描述这里写图片描述

原创粉丝点击