Skip to content

Commit 5fb7995

Browse files
authored
Create Solution.cpp
1 parent 27c77d0 commit 5fb7995

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
class Solution {
2+
private:
3+
void dfs(vector<vector<char>>& b,
4+
vector<vector<bool>>& m,
5+
int i, int j)
6+
{
7+
if (i < 0 || i >= b.size()
8+
|| j < 0 || j >= b[0].size())
9+
return ;
10+
11+
if (b[i][j] != 'O' || m[i][j])
12+
return ;
13+
14+
m[i][j] = true ;
15+
dfs(b, m, i-1, j) ;
16+
dfs(b, m, i+1, j) ;
17+
dfs(b, m, i, j-1) ;
18+
dfs(b, m, i, j+1) ;
19+
}
20+
public:
21+
void solve(vector<vector<char>>& board) {
22+
if (board.size() == 0 || board[0].size() == 0)
23+
return ;
24+
25+
vector<vector<bool>> marks(board.size(), vector<bool>(board[0].size(), false)) ;
26+
const int w_1 = board[0].size() - 1 ;
27+
for (int i = 0; i < w_1; ++i)
28+
{
29+
if (board[0][i] == 'O')
30+
dfs(board, marks, 0, i) ;
31+
if (board[board.size()-1][i] == 'O')
32+
dfs(board, marks, board.size()-1, i) ;
33+
}
34+
35+
const int h_1 = board.size() - 1 ;
36+
for (int i = 1; i < h_1; ++i)
37+
{
38+
if (board[i][0] == 'O')
39+
dfs(board, marks, i, 0) ;
40+
if (board[i][board[0].size()-1] == 'O')
41+
dfs(board, marks, i, board[0].size()-1) ;
42+
}
43+
44+
for (int i = 1; i < h_1; ++i)
45+
for (int j = 1; j < w_1; ++j)
46+
if (board[i][j] == 'O' && !marks[i][j])
47+
board[i][j] = 'X' ;
48+
49+
}
50+
};

0 commit comments

Comments
 (0)