Skip to content

Commit 89b35ca

Browse files
authored
feat: add typescript solution to lc problem: No.0200.Number of Islands (doocs#470)
1 parent 3c72728 commit 89b35ca

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454

5555
<!-- 这里可写通用的实现逻辑 -->
5656

57+
BFS/DFS 均可
58+
5759
<!-- tabs:start -->
5860

5961
### **Python3**
@@ -72,6 +74,40 @@
7274

7375
```
7476

77+
### **TypeScript**
78+
79+
```ts
80+
function numIslands(grid: string[][]): number {
81+
let m = grid.length, n = grid[0].length;
82+
let ans = 0;
83+
for (let i = 0; i < m; ++i) {
84+
for (let j = 0; j < n; ++j) {
85+
if (grid[i][j] == '1') {
86+
bfs(grid, i, j)
87+
++ans;
88+
}
89+
}
90+
}
91+
return ans;
92+
};
93+
94+
function bfs(grid: string[][], r: number, c: number): void {
95+
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+
}
107+
}
108+
}
109+
```
110+
75111
### **...**
76112

77113
```

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,40 @@
6060

6161
```
6262

63+
### **TypeScript**
64+
65+
```ts
66+
function numIslands(grid: string[][]): number {
67+
let m = grid.length, n = grid[0].length;
68+
let ans = 0;
69+
for (let i = 0; i < m; ++i) {
70+
for (let j = 0; j < n; ++j) {
71+
if (grid[i][j] == '1') {
72+
bfs(grid, i, j)
73+
++ans;
74+
}
75+
}
76+
}
77+
return ans;
78+
};
79+
80+
function bfs(grid: string[][], r: number, c: number): void {
81+
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+
}
93+
}
94+
}
95+
```
96+
6397
### **...**
6498

6599
```
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
function numIslands(grid: string[][]): number {
2+
let m = grid.length, n = grid[0].length;
3+
let ans = 0;
4+
for (let i = 0; i < m; ++i) {
5+
for (let j = 0; j < n; ++j) {
6+
if (grid[i][j] == '1') {
7+
bfs(grid, i, j)
8+
++ans;
9+
}
10+
}
11+
}
12+
return ans;
13+
};
14+
15+
function bfs(grid: string[][], r: number, c: number): void {
16+
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+
}
28+
}
29+
}

0 commit comments

Comments
 (0)