Skip to content

Commit 5eb7f4c

Browse files
authored
feat: add ts solution to lc problem: No.323 (doocs#2990)
1 parent fe2171d commit 5eb7f4c

File tree

3 files changed

+114
-0
lines changed

3 files changed

+114
-0
lines changed

solution/0300-0399/0323.Number of Connected Components in an Undirected Graph/README.md

+43
Original file line numberDiff line numberDiff line change
@@ -492,4 +492,47 @@ function countComponents(n: number, edges: number[][]): number {
492492

493493
<!-- solution:end -->
494494

495+
<!-- solution:start -->
496+
497+
### 方法 3: BFS
498+
499+
<!-- tabs:start -->
500+
501+
#### TypeScript
502+
503+
```ts
504+
function countComponents(n: number, edges: number[][]): number {
505+
const g: number[][] = Array.from({ length: n }, () => []);
506+
const vis = new Set<number>();
507+
let ans = 0;
508+
509+
for (const [i, j] of edges) {
510+
g[i].push(j);
511+
g[j].push(i);
512+
}
513+
514+
const dfs = (i: number) => {
515+
if (vis.has(i)) return;
516+
517+
vis.add(i);
518+
for (const j of g[i]) {
519+
dfs(j);
520+
}
521+
};
522+
523+
for (let i = 0; i < n; i++) {
524+
if (vis.has(i)) continue;
525+
526+
dfs(i);
527+
ans++;
528+
}
529+
530+
return ans;
531+
}
532+
```
533+
534+
<!-- tabs:end -->
535+
536+
<!-- solution:end -->
537+
495538
<!-- problem:end -->

solution/0300-0399/0323.Number of Connected Components in an Undirected Graph/README_EN.md

+43
Original file line numberDiff line numberDiff line change
@@ -487,4 +487,47 @@ function countComponents(n: number, edges: number[][]): number {
487487

488488
<!-- solution:end -->
489489

490+
<!-- solution:start -->
491+
492+
### Solution 3: BFS
493+
494+
<!-- tabs:start -->
495+
496+
#### TypeScript
497+
498+
```ts
499+
function countComponents(n: number, edges: number[][]): number {
500+
const g: number[][] = Array.from({ length: n }, () => []);
501+
const vis = new Set<number>();
502+
let ans = 0;
503+
504+
for (const [i, j] of edges) {
505+
g[i].push(j);
506+
g[j].push(i);
507+
}
508+
509+
const dfs = (i: number) => {
510+
if (vis.has(i)) return;
511+
512+
vis.add(i);
513+
for (const j of g[i]) {
514+
dfs(j);
515+
}
516+
};
517+
518+
for (let i = 0; i < n; i++) {
519+
if (vis.has(i)) continue;
520+
521+
dfs(i);
522+
ans++;
523+
}
524+
525+
return ans;
526+
}
527+
```
528+
529+
<!-- tabs:end -->
530+
531+
<!-- solution:end -->
532+
490533
<!-- problem:end -->
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
function countComponents(n: number, edges: number[][]): number {
2+
const g: number[][] = Array.from({ length: n }, () => []);
3+
const vis = new Set<number>();
4+
let ans = 0;
5+
6+
for (const [i, j] of edges) {
7+
g[i].push(j);
8+
g[j].push(i);
9+
}
10+
11+
const dfs = (i: number) => {
12+
if (vis.has(i)) return;
13+
14+
vis.add(i);
15+
for (const j of g[i]) {
16+
dfs(j);
17+
}
18+
};
19+
20+
for (let i = 0; i < n; i++) {
21+
if (vis.has(i)) continue;
22+
23+
dfs(i);
24+
ans++;
25+
}
26+
27+
return ans;
28+
}

0 commit comments

Comments
 (0)