Skip to content

Commit 77beee9

Browse files
authored
feat: add typescript solution to lc problem: No.1905.Count Sub Islands (doocs#466)
1 parent a7b557e commit 77beee9

File tree

3 files changed

+103
-0
lines changed

3 files changed

+103
-0
lines changed

solution/1900-1999/1905.Count Sub Islands/README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,42 @@ class Solution {
113113
}
114114
```
115115

116+
### **TypeScript**
117+
118+
```ts
119+
function countSubIslands(grid1: number[][], grid2: number[][]): number {
120+
let m = grid1.length, n = grid1[0].length;
121+
let ans = 0;
122+
for (let i = 0; i < m; ++i) {
123+
for (let j = 0; j < n; ++j) {
124+
if (grid2[i][j] == 1 && dfs(grid1, grid2, i, j)) {
125+
++ans;
126+
}
127+
}
128+
}
129+
return ans;
130+
};
131+
132+
function dfs(grid1: number[][], grid2: number[][], i: number, j: number): boolean {
133+
let m = grid1.length, n = grid1[0].length;
134+
let ans = true;
135+
if (grid1[i][j] == 0) {
136+
ans = false;
137+
}
138+
grid2[i][j] = 0;
139+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
140+
let x = i + dx, y = j + dy;
141+
if (x < 0 || x > m - 1 || y < 0 || y > n - 1 || grid2[x][y] == 0) {
142+
continue;
143+
}
144+
if (!dfs(grid1, grid2, x, y)) {
145+
ans = false;
146+
}
147+
}
148+
return ans;
149+
}
150+
```
151+
116152
### **C++**
117153

118154
```cpp

solution/1900-1999/1905.Count Sub Islands/README_EN.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,42 @@ class Solution {
107107
}
108108
```
109109

110+
### **TypeScript**
111+
112+
```ts
113+
function countSubIslands(grid1: number[][], grid2: number[][]): number {
114+
let m = grid1.length, n = grid1[0].length;
115+
let ans = 0;
116+
for (let i = 0; i < m; ++i) {
117+
for (let j = 0; j < n; ++j) {
118+
if (grid2[i][j] == 1 && dfs(grid1, grid2, i, j)) {
119+
++ans;
120+
}
121+
}
122+
}
123+
return ans;
124+
};
125+
126+
function dfs(grid1: number[][], grid2: number[][], i: number, j: number): boolean {
127+
let m = grid1.length, n = grid1[0].length;
128+
let ans = true;
129+
if (grid1[i][j] == 0) {
130+
ans = false;
131+
}
132+
grid2[i][j] = 0;
133+
for (let [dx, dy] of [[0, 1], [0, -1], [1, 0], [-1, 0]]) {
134+
let x = i + dx, y = j + dy;
135+
if (x < 0 || x > m - 1 || y < 0 || y > n - 1 || grid2[x][y] == 0) {
136+
continue;
137+
}
138+
if (!dfs(grid1, grid2, x, y)) {
139+
ans = false;
140+
}
141+
}
142+
return ans;
143+
}
144+
```
145+
110146
### **C++**
111147

112148
```cpp
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
function countSubIslands(grid1: number[][], grid2: number[][]): number {
2+
let m = grid1.length, n = grid1[0].length;
3+
let ans = 0;
4+
for (let i = 0; i < m; ++i) {
5+
for (let j = 0; j < n; ++j) {
6+
if (grid2[i][j] == 1 && dfs(grid1, grid2, i, j)) {
7+
++ans;
8+
}
9+
}
10+
}
11+
return ans;
12+
};
13+
14+
function dfs(grid1: number[][], grid2: number[][], i: number, j: number): boolean {
15+
let m = grid1.length, n = grid1[0].length;
16+
let ans = true;
17+
if (grid1[i][j] == 0) {
18+
ans = false;
19+
}
20+
grid2[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+
if (x < 0 || x > m - 1 || y < 0 || y > n - 1 || grid2[x][y] == 0) {
24+
continue;
25+
}
26+
if (!dfs(grid1, grid2, x, y)) {
27+
ans = false;
28+
}
29+
}
30+
return ans;
31+
}

0 commit comments

Comments
 (0)