Skip to content

Commit 149a55a

Browse files
author
ChienkuChen
committed
Redo 200
1 parent cdde985 commit 149a55a

File tree

2 files changed

+72
-24
lines changed

2 files changed

+72
-24
lines changed

src/_200/200.number-of-islands.java

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -2,45 +2,37 @@
22

33
class Solution {
44
public int numIslands(char[][] grid) {
5-
int rows = grid.length;
6-
if (rows == 0)
5+
int m = grid.length;
6+
if (m == 0)
77
return 0;
8-
int columns = grid[0].length;
9-
boolean[][] visited = new boolean[rows][columns];
8+
int n = grid[0].length;
109

1110
int count = 0;
12-
for (int i = 0; i < rows; i++) {
13-
for (int j = 0; j < columns; j++) {
14-
if (grid[i][j] == '1' && !visited[i][j]) {
11+
for (int i = 0; i < m; i++) {
12+
for (int j = 0; j < n; j++) {
13+
if (grid[i][j] == '1') {
1514
count++;
16-
visit(visited, grid, i, j);
15+
visit(i, j, m, n, grid);
1716
}
17+
1818
}
1919
}
2020

2121
return count;
2222
}
2323

24-
private void visit(boolean[][] visited, char[][] grid, int i, int j) {
25-
if (i < 0 || i >= grid.length)
26-
return;
27-
28-
if (j < 0 || j >= grid[0].length)
24+
private void visit(int i, int j, int m, int n, char[][] grid) {
25+
if (i < 0 || i >= m || j < 0 || j >= n)
2926
return;
3027

31-
if (grid[i][j] != '1' || visited[i][j])
28+
if (grid[i][j] == '0' || grid[i][j] == '#')
3229
return;
3330

34-
visited[i][j] = true;
35-
36-
// left
37-
visit(visited, grid, i, j - 1);
38-
// right
39-
visit(visited, grid, i, j + 1);
40-
// up
41-
visit(visited, grid, i - 1, j);
42-
// down
43-
visit(visited, grid, i + 1, j);
31+
grid[i][j] = '#';
32+
visit(i - 1, j, m, n, grid);
33+
visit(i + 1, j, m, n, grid);
34+
visit(i, j - 1, m, n, grid);
35+
visit(i, j + 1, m, n, grid);
4436
}
4537

4638
public static void main(String[] args) {
@@ -52,3 +44,5 @@ public static void main(String[] args) {
5244
}));
5345
}
5446
}
47+
48+
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
package _200;
2+
3+
class Solution {
4+
public int numIslands(char[][] grid) {
5+
int rows = grid.length;
6+
if (rows == 0)
7+
return 0;
8+
int columns = grid[0].length;
9+
boolean[][] visited = new boolean[rows][columns];
10+
11+
int count = 0;
12+
for (int i = 0; i < rows; i++) {
13+
for (int j = 0; j < columns; j++) {
14+
if (grid[i][j] == '1' && !visited[i][j]) {
15+
count++;
16+
visit(visited, grid, i, j);
17+
}
18+
}
19+
}
20+
21+
return count;
22+
}
23+
24+
private void visit(boolean[][] visited, char[][] grid, int i, int j) {
25+
if (i < 0 || i >= grid.length)
26+
return;
27+
28+
if (j < 0 || j >= grid[0].length)
29+
return;
30+
31+
if (grid[i][j] != '1' || visited[i][j])
32+
return;
33+
34+
visited[i][j] = true;
35+
36+
// left
37+
visit(visited, grid, i, j - 1);
38+
// right
39+
visit(visited, grid, i, j + 1);
40+
// up
41+
visit(visited, grid, i - 1, j);
42+
// down
43+
visit(visited, grid, i + 1, j);
44+
}
45+
46+
public static void main(String[] args) {
47+
System.out.println(new Solution().numIslands(new char[][]{
48+
new char[]{'1', '1', '0', '0', '0'},
49+
new char[]{'1', '1', '0', '0', '0'},
50+
new char[]{'0', '0', '1', '0', '0'},
51+
new char[]{'0', '0', '0', '1', '1'}
52+
}));
53+
}
54+
}

0 commit comments

Comments
 (0)