LeetCode-Surrounded Regions

来源:互联网 发布:网站编程语言排行 编辑:程序博客网 时间:2024/05/14 00:01
class Solution {public:    void solve(vector<vector<char>> &board) {        // Start typing your C/C++ solution below        // DO NOT write int main() function        if (board.size() == 0 || board[0].size() == 0)        {            return;        }        for (int i = 0; i < board.size(); ++i)        {            bfs(i, 0, board);            bfs(i, board[0].size() - 1, board);        }        for (int j = 1; j < board[0].size() - 1; ++j)        {            bfs(0, j, board);            bfs(board.size() - 1, j, board);        }        for (int i = 0; i < board.size(); ++i)            for (int j = 0; j < board[0].size(); ++j)                if (board[i][j] == 'O')                    board[i][j] = 'X';                else if (board[i][j] == 'S')                    board[i][j] = 'O';    }        void bfs(int row, int col, vector<vector<char> > &board)    {        queue<pair<int, int> > Q;        fill(row, col, board, Q);        while (!Q.empty())        {            pair<int, int> cor = Q.front();            Q.pop();            fill(cor.first - 1, cor.second, board, Q);            fill(cor.first + 1, cor.second, board, Q);            fill(cor.first, cor.second - 1, board, Q);            fill(cor.first, cor.second + 1, board, Q);        }    }        void fill(int row, int col, vector<vector<char> > &board, queue<pair<int, int> > &Q)    {        if (row < 0 || row >= board.size() || col < 0 || col >= board[0].size() || board[row][col] != 'O')        {            return;        }        board[row][col] = 'S';        Q.push(make_pair(row, col));    }};

原创粉丝点击