Skip to content

Commit 86c96c3

Browse files
committed
solve number of island
1 parent 7230f42 commit 86c96c3

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

number-of-islands/sora0319.java

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
class Solution {
2+
public int numIslands(char[][] grid) {
3+
Queue<Pair> island = new LinkedList<>();
4+
int N = grid.length;
5+
int M = grid[0].length;
6+
boolean[][] visited = new boolean[N][M];
7+
int count = 0;
8+
9+
for(int i = 0; i < N; i++){
10+
for(int j = 0; j < M; j++){
11+
if(!visited[i][j] && grid[i][j] == '1'){
12+
island.offer(new Pair(i, j));
13+
visited[i][j] = true;
14+
bfs(grid, visited, island);
15+
count++;
16+
}
17+
}
18+
}
19+
return count;
20+
}
21+
public void bfs(char[][] grid, boolean[][] visited, Queue<Pair> island){
22+
int[] mx = {-1, 1, 0, 0};
23+
int[] my = {0, 0, -1, 1};
24+
25+
26+
while(!island.isEmpty()){
27+
Pair p = island.poll();
28+
for(int i = 0; i < 4; i++){
29+
int nx = mx[i] + p.x;
30+
int ny = my[i] + p.y;
31+
32+
if(nx < 0 || ny < 0|| nx >= grid.length || ny >= grid[0].length) continue;
33+
if(visited[nx][ny] || grid[nx][ny] == '0') continue;
34+
35+
island.offer(new Pair(nx, ny));
36+
visited[nx][ny] = true;
37+
}
38+
39+
}
40+
}
41+
42+
class Pair{
43+
int x;
44+
int y;
45+
Pair(int x, int y){
46+
this.x = x;
47+
this.y = y;
48+
}
49+
}
50+
}
51+

0 commit comments

Comments
 (0)