Skip to content

Commit a568f7d

Browse files
committed
June 17 ques
1 parent 1ab6eb7 commit a568f7d

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
//https://leetcode.com/explore/challenge/card/june-leetcoding-challenge/541/week-3-june-15th-june-21st/3363/
2+
3+
class Solution {
4+
private:
5+
void traverse(vector<vector<char>>& copy, vector<vector<char>>& board, vector<vector<bool>>& visited, int r, int c) {
6+
visited[r][c] = true;
7+
8+
int row[] = {0, 0, -1, 1};
9+
int col[] = {-1, 1, 0, 0};
10+
int n = board.size();
11+
int m = board[0].size();
12+
13+
for(int i = 0; i < 4; i++) {
14+
int R = r + row[i];
15+
int C = c + col[i];
16+
17+
if(R >= 0 && R < n && C >= 0 && C < m && copy[R][C] == 'O' && !visited[R][C]){
18+
board[R][C] = 'O';
19+
traverse(copy, board, visited, R, C);
20+
}
21+
}
22+
}
23+
public:
24+
void solve(vector<vector<char>>& board) {
25+
if(board.size() == 0)
26+
return;
27+
int n = board.size();
28+
int m = board[0].size();
29+
30+
vector<vector<char>> copy = board;
31+
int i, j;
32+
for(i = 1; i < n - 1; i++) {
33+
for(j = 1; j < m - 1; j++) {
34+
if(board[i][j] == 'O')
35+
board[i][j] = 'X';
36+
}
37+
}
38+
39+
vector<vector<bool>> visited(board.size(), vector<bool>(board[0].size(), false));
40+
41+
// for(i = 0; i < n; i++) {
42+
// for(j = 0; j < m; j++)
43+
// cout << board[i][j] << " ";
44+
// cout << endl;
45+
// }
46+
for(i = 0; i < m; i++) {
47+
if(board[0][i] == 'O' && !visited[0][i])
48+
traverse(copy, board, visited, 0, i);
49+
}
50+
for(i = 0; i < m; i++) {
51+
if(board[n - 1][i] == 'O' && !visited[n - 1][i])
52+
traverse(copy, board, visited, n - 1, i);
53+
}
54+
for(i = 0; i < n; i++) {
55+
if(board[i][0] == 'O' && !visited[i][0])
56+
traverse(copy, board, visited, i, 0);
57+
}
58+
for(i = 0; i < n; i++) {
59+
if(board[i][m - 1] == 'O' && !visited[i][n - 1])
60+
traverse(copy, board, visited, i, n - 1);
61+
}
62+
}
63+
};

0 commit comments

Comments
 (0)