Leetcode 130. Surrounded Regions | | Leetcode 130. Surrounded Regions 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051class Solution {public: void solve(vector<vector<char>>& board) { if(board.size() == 0) { return; } int rows = board.size(); int columns = board[0].size(); flipBorder(board, 'O', '1', rows, columns); for(int i = 1; i < rows - 1; i++) { for(int j = 1; j < columns - 1; j++) { if(board[i][j] == 'O') { capture(board, i, j, rows, columns, 'O', 'X'); } } } flipBorder(board, '1', 'O', rows, columns); } private: void flipBorder(vector<vector<char>>& board, char src, char target, int& rows, int& columns) { for(int i = 0; i < rows; i++) { if(board[i][0] == src) { capture(board, i, 0, rows, columns, src, target); } if(board[i][columns - 1] == src) { capture(board, i, columns - 1, rows, columns, src, target); } } for(int i = 0; i < columns; i++) { if(board[0][i] == src) { capture(board, 0, i, rows, columns, src, target); } if(board[rows - 1][i] == src) { capture(board, rows - 1, i, rows, columns, src, target); } } } void capture(vector<vector<char>>& board, int i, int j, int& rows, int& columns, char src, char target) { if(i < 0 || i == rows || j < 0 || j == columns || board[i][j] != src) { return; } board[i][j] = target; capture(board, i + 1, j, rows, columns, src, target); capture(board, i - 1, j, rows, columns, src, target); capture(board, i, j + 1, rows, columns, src, target); capture(board, i, j - 1, rows, columns, src, target); }}; Reference https://leetcode.com/problems/surrounded-regions/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏