Skip to content

Commit f79129a

Browse files
authored
using flood fill algorithm
1 parent bd97a20 commit f79129a

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

Sorrounded regions

+60
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
class Solution {
2+
public:
3+
4+
void flood_fill(vector<vector<char>>& board, int x, int y, char prev1,char new1, int m, int n)
5+
{
6+
if(x<0 || x>=m || y<0 ||y>=n)
7+
return;
8+
if(board[x][y]!=prev1)
9+
return;
10+
11+
board[x][y] = new1;
12+
13+
//all four directions
14+
flood_fill(board,x+1, y, prev1, new1,m,n);
15+
flood_fill(board,x-1, y, prev1, new1,m,n);
16+
flood_fill(board,x, y+1, prev1, new1,m,n);
17+
flood_fill(board,x, y-1, prev1, new1,m,n);
18+
19+
}
20+
void replace_edges(vector<vector<char>>& board)
21+
{
22+
23+
int m = board.size();
24+
int n = board[0].size();
25+
26+
for(int i=0;i<m;i++)
27+
for(int j=0;j<n;j++)
28+
if(board[i][j]=='O')
29+
board[i][j]='-';
30+
31+
for(int i=0;i<m;i++)
32+
if(board[i][0]=='-')
33+
flood_fill(board, i, 0, '-', 'O',m,n);
34+
35+
for(int i=0;i<n;i++)
36+
if(board[0][i]=='-')
37+
flood_fill(board, 0, i, '-', 'O',m,n);
38+
39+
for(int i=0;i<m;i++)
40+
if(board[i][n-1]=='-')
41+
flood_fill(board, i, n-1, '-', 'O',m,n);
42+
43+
for(int i=0;i<n;i++)
44+
if(board[m-1][i]=='-')
45+
flood_fill(board, m-1, i, '-', 'O',m,n);
46+
47+
for(int i=0;i<m;i++)
48+
for(int j=0;j<n;j++)
49+
if(board[i][j]=='-')
50+
board[i][j] = 'X';
51+
52+
}
53+
void solve(vector<vector<char>>& board)
54+
{
55+
if(board.size()==0)
56+
return;
57+
replace_edges(board);
58+
59+
}
60+
};

0 commit comments

Comments
 (0)