Skip to content

Commit fc58757

Browse files
authored
fix: fix typescript solution to lc problem: No.0200.Number of Islands (doocs#476)
1 parent 7a03cf9 commit fc58757

File tree

3 files changed

+27
-39
lines changed

3 files changed

+27
-39
lines changed

solution/0200-0299/0200.Number of Islands/README.md

+9-13
Original file line numberDiff line numberDiff line change
@@ -83,27 +83,23 @@ function numIslands(grid: string[][]): number {
8383
for (let i = 0; i < m; ++i) {
8484
for (let j = 0; j < n; ++j) {
8585
if (grid[i][j] == '1') {
86-
bfs(grid, i, j)
86+
dfs(grid, i, j);
8787
++ans;
8888
}
8989
}
9090
}
9191
return ans;
9292
};
9393

94-
function bfs(grid: string[][], r: number, c: number): void {
94+
function dfs(grid: string[][], i: number, j: number) {
9595
let m = grid.length, n = grid[0].length;
96-
let queue = new Array();
97-
queue.push([r, c]);
98-
while (queue.length > 0) {
99-
let [i, j] = queue.shift();
100-
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
101-
let x = i + dx, y = j + dy;
102-
if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') {
103-
grid[x][y] = '0';
104-
queue.push([x, y]);
105-
}
106-
}
96+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || grid[i][j] == '0') {
97+
return;
98+
}
99+
grid[i][j] = '0';
100+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
101+
let x = i + dx, y = j + dy;
102+
dfs(grid, x, y);
107103
}
108104
}
109105
```

solution/0200-0299/0200.Number of Islands/README_EN.md

+9-13
Original file line numberDiff line numberDiff line change
@@ -69,27 +69,23 @@ function numIslands(grid: string[][]): number {
6969
for (let i = 0; i < m; ++i) {
7070
for (let j = 0; j < n; ++j) {
7171
if (grid[i][j] == '1') {
72-
bfs(grid, i, j)
72+
dfs(grid, i, j);
7373
++ans;
7474
}
7575
}
7676
}
7777
return ans;
7878
};
7979

80-
function bfs(grid: string[][], r: number, c: number): void {
80+
function dfs(grid: string[][], i: number, j: number) {
8181
let m = grid.length, n = grid[0].length;
82-
let queue = new Array();
83-
queue.push([r, c]);
84-
while (queue.length > 0) {
85-
let [i, j] = queue.shift();
86-
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
87-
let x = i + dx, y = j + dy;
88-
if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') {
89-
grid[x][y] = '0';
90-
queue.push([x, y]);
91-
}
92-
}
82+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || grid[i][j] == '0') {
83+
return;
84+
}
85+
grid[i][j] = '0';
86+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
87+
let x = i + dx, y = j + dy;
88+
dfs(grid, x, y);
9389
}
9490
}
9591
```

solution/0200-0299/0200.Number of Islands/Solution.ts

+9-13
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,22 @@ function numIslands(grid: string[][]): number {
44
for (let i = 0; i < m; ++i) {
55
for (let j = 0; j < n; ++j) {
66
if (grid[i][j] == '1') {
7-
bfs(grid, i, j)
7+
dfs(grid, i, j);
88
++ans;
99
}
1010
}
1111
}
1212
return ans;
1313
};
1414

15-
function bfs(grid: string[][], r: number, c: number): void {
15+
function dfs(grid: string[][], i: number, j: number) {
1616
let m = grid.length, n = grid[0].length;
17-
let queue = new Array();
18-
queue.push([r, c]);
19-
while (queue.length > 0) {
20-
let [i, j] = queue.shift();
21-
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
22-
let x = i + dx, y = j + dy;
23-
if (x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1') {
24-
grid[x][y] = '0';
25-
queue.push([x, y]);
26-
}
27-
}
17+
if (i < 0 || i > m - 1 || j < 0 || j > n - 1 || grid[i][j] == '0') {
18+
return;
19+
}
20+
grid[i][j] = '0';
21+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
22+
let x = i + dx, y = j + dy;
23+
dfs(grid, x, y);
2824
}
2925
}

0 commit comments

Comments
 (0)