Skip to content

Commit a16249e

Browse files
committed
Commit
1 parent 195997a commit a16249e

File tree

3 files changed

+148
-0
lines changed

3 files changed

+148
-0
lines changed

Leetcode/MaxAreaofIsland.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
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+
};

Leetcode/NumberofIslands.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
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+
};

Leetcode/SurroundedRegions.cpp

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
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+
};

0 commit comments

Comments
 (0)