Skip to content

Commit 5196abe

Browse files
committed
Time: 4 ms (50.69%), Space: 52.2 MB (14.89%) - LeetHub
1 parent 866dc6d commit 5196abe

File tree

1 file changed

+33
-49
lines changed

1 file changed

+33
-49
lines changed
Lines changed: 33 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,35 @@
11
class Solution {
2-
public int numIslands(char[][] grid){
3-
int n=grid.length;
4-
int m=grid[0].length;
5-
int[][] vis =new int[n][m];
6-
int cnt=0;
7-
for(int i=0;i<n;i++){
8-
for(int j=0;j<m;j++){
9-
if(grid[i][j]=='1' && vis[i][j]!=1){
10-
cnt++;
11-
bfs(i,j,vis,grid);
12-
}
13-
}
14-
}
15-
return cnt;
16-
17-
}
18-
public static void bfs(int row,int col,int[][] vis,char[][] grid){
19-
int n=grid.length;
20-
int m=grid[0].length;
21-
Queue<Pair> que = new LinkedList<>();
22-
que.offer(new Pair(row,col));
23-
24-
int drow[] ={0,1,0,-1};
25-
int dcol[] ={1,0,-1,0};
26-
27-
while(!que.isEmpty()){
28-
Pair pp =que.poll();
29-
int r =pp.val1;
30-
int c=pp.val2;
31-
for(int i=0;i<4;i++){
32-
int nrow =r+drow[i];
33-
int ncol =c+dcol[i];
34-
if(nrow>=0 && nrow<n && ncol>=0 && ncol<m && vis[nrow][ncol]!=1 && grid[nrow][ncol]=='1'){
35-
que.offer(new Pair(nrow,ncol));
36-
vis[nrow][ncol]=1;
37-
}
38-
}
39-
}
40-
return ;
41-
}
42-
static class Pair{
43-
int val1;
44-
int val2;
45-
46-
Pair(int _val1,int _val2){
47-
this.val1=_val1;
48-
this.val2=_val2;
49-
}
50-
}
2+
public int numIslands(char[][] grid) {
3+
int n = grid.length , m = grid[0].length;
4+
int cnt =0;
5+
int[][] vis = new int[n][m];
6+
7+
for(int i=0;i<n;i++){
8+
for(int j=0;j<m;j++){
9+
if(grid[i][j]=='1' && vis[i][j]!=1){
10+
cnt++;
11+
dfs(i,j,grid,vis);
12+
}
13+
}
14+
}
15+
return cnt;
16+
17+
18+
19+
}
20+
public void dfs(int x , int y, char[][] grid, int[][] vis){
21+
int n = grid.length , m = grid[0].length;
22+
int[] dx ={0,-1,0,1};
23+
int[] dy ={1,0,-1,0};
24+
vis[x][y]=1;
25+
for(int i=0;i<4;i++){
26+
int nx =x+dx[i];
27+
int ny =y+dy[i];
28+
29+
if(nx>=0 && ny>=0 && nx<n && ny<m && grid[nx][ny]!='0' && vis[nx][ny]!=1){
30+
dfs(nx,ny,grid,vis);
31+
}
32+
}
33+
34+
}
5135
}

0 commit comments

Comments
 (0)