File tree Expand file tree Collapse file tree 3 files changed +148
-0
lines changed
Expand file tree Collapse file tree 3 files changed +148
-0
lines changed Original file line number Diff line number Diff line change 1+ class Solution {
2+
3+ public:
4+
5+ int ans=0 ;
6+ int c=0 ;
7+ int visited[1000 ][1000 ]={0 };
8+
9+ bool issafe (int p,int q,vector<vector<int >>& grid){
10+ return (p>=0 && p<grid.size () && q>=0 && q<grid[0 ].size ());
11+ }
12+
13+ void dfs (int u,int v,vector<vector<int >>& grid){
14+
15+ visited[u][v]=1 ;
16+ int a[]={0 ,0 ,1 ,-1 };
17+ int b[]={1 ,-1 ,0 ,0 };
18+ c++;
19+
20+ for (int i=0 ;i<4 ;i++){
21+ int p=u+a[i];int q=v+b[i];
22+
23+ if (issafe (p,q,grid) && visited[p][q]==0 && grid[p][q]==1 ){
24+ dfs (p,q,grid);
25+ }
26+ }
27+ }
28+
29+ int maxAreaOfIsland (vector<vector<int >>& grid) {
30+
31+ for (int i=0 ;i<grid.size ();i++){
32+ for (int j=0 ;j<grid[0 ].size ();j++){
33+ if (!visited[i][j] && grid[i][j]==1 ){
34+ c=0 ;
35+ dfs (i,j,grid);
36+ ans=max (ans,c);
37+ }
38+ }
39+ }
40+
41+ return ans;
42+ }
43+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+
4+ int ans=0 ;
5+ int visited[1000 ][1000 ]={0 };
6+
7+ bool issafe (int p,int q,vector<vector<char >>& grid){
8+ return (p>=0 && p<grid.size () && q>=0 && q<grid[0 ].size ());
9+ }
10+
11+ void dfs (int u,int v,vector<vector<char >>& grid){
12+
13+ visited[u][v]=1 ;
14+ int a[]={0 ,0 ,1 ,-1 };
15+ int b[]={1 ,-1 ,0 ,0 };
16+
17+ for (int i=0 ;i<4 ;i++){
18+ int p=u+a[i];int q=v+b[i];
19+
20+ if (issafe (p,q,grid) && visited[p][q]==0 && grid[p][q]==' 1' ){
21+ dfs (p,q,grid);
22+ }
23+ }
24+ }
25+
26+ int numIslands (vector<vector<char >>& grid) {
27+ for (int i=0 ;i<grid.size ();i++){
28+ for (int j=0 ;j<grid[0 ].size ();j++){
29+ if (!visited[i][j] && grid[i][j]==' 1' ){
30+ ans++;
31+ dfs (i,j,grid);
32+ }
33+ }
34+ }
35+
36+ return ans;
37+ }
38+ };
Original file line number Diff line number Diff line change 1+ class Solution {
2+ public:
3+
4+ int ans=0 ;
5+ int visited[1000 ][1000 ]={0 };
6+
7+ bool issafe (int p,int q,vector<vector<char >>& grid){
8+ return (p>=0 && p<grid.size () && q>=0 && q<grid[0 ].size ());
9+ }
10+
11+ void dfs (int u,int v,vector<vector<char >>& grid){
12+
13+ visited[u][v]=1 ;
14+ grid[u][v]=' F' ;
15+ int a[]={0 ,0 ,1 ,-1 };
16+ int b[]={1 ,-1 ,0 ,0 };
17+
18+ for (int i=0 ;i<4 ;i++){
19+ int p=u+a[i];int q=v+b[i];
20+
21+ if (issafe (p,q,grid) && visited[p][q]==0 && grid[p][q]==' O' ){
22+ dfs (p,q,grid);
23+ }
24+ }
25+ }
26+
27+ void solve (vector<vector<char >>& board) {
28+
29+
30+ int r=board.size ();
31+ if (r==0 )
32+ return ;
33+ int c=board[0 ].size ();
34+
35+
36+ for (int i=0 ;i<c;i++){
37+ if (!visited[0 ][i] && board[0 ][i]==' O' )
38+ dfs (0 ,i,board);
39+ }
40+
41+ for (int i=0 ;i<c;i++){
42+ if (!visited[r-1 ][i] && board[r-1 ][i]==' O' )
43+ dfs (r-1 ,i,board);
44+ }
45+
46+ for (int i=0 ;i<r;i++){
47+ if (!visited[i][0 ] && board[i][0 ]==' O' )
48+ dfs (i,0 ,board);
49+ }
50+
51+ for (int i=0 ;i<r;i++){
52+ if (!visited[i][c-1 ] && board[i][c-1 ]==' O' )
53+ dfs (i,c-1 ,board);
54+ }
55+
56+ for (int i=0 ;i<board.size ();i++){
57+ for (int j=0 ;j<board[0 ].size ();j++){
58+ if (board[i][j]==' O' )
59+ board[i][j]=' X' ;
60+ else if (board[i][j]==' F' )
61+ board[i][j]=' O' ;
62+ }
63+ }
64+
65+ }
66+
67+ };
You can’t perform that action at this time.
0 commit comments