别人的代码,简单题吧,dfs或者bfs都行,就是比那上面的o(包括和这些o相连的o)之外其他的0都变成x 2刷自己打一次吧
class Solution {public: void helper(vector<vector<char>>& board, int i, int j) { queue<pair<int, int>> q; pair<int, int> p; p.first = i; p.second = j; board[i][j] = 'M'; q.push(p); int dir[4][2] = {{0,1}, {0,-1}, {1,0}, {-1,0}}; while(!q.empty()) { pair<int, int> g = q.front(); q.pop(); for(int i = 0; i < 4; i++) { int tmpX = dir[i][0] + g.first; int tmpY = dir[i][1] + g.second; if(tmpX < 0 || tmpY < 0 || tmpX >= board.size() || tmpY >= board[0].size()) continue; if(board[tmpX][tmpY] == 'O') { q.push(pair<int,int>(tmpX, tmpY)); board[tmpX][tmpY] = 'M'; } } } } void solve(vector<vector<char>>& board) { int m = board.size(); if(m == 0) return; int n = board[0].size(); for(int i = 0; i < m; i++) { if(board[i][0] == 'O') { helper(board, i, 0); } if(board[i][n-1] == 'O') { helper(board, i, n-1); } } for(int j = 0; j < n; j++) { if(board[0][j] == 'O') { helper(board, 0, j); } if(board[m-1][j] == 'O') { helper(board, m-1, j); } } for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { if(board[i][j] == 'M') { board[i][j] = 'O'; } else if(board[i][j] == 'O') { board[i][j] = 'X'; } } } }};新闻热点
疑难解答