Skip to content

Commit 2784996

Browse files
committed
Update 0323. 无向图中连通分量的数目.md
1 parent da16856 commit 2784996

File tree

1 file changed

+40
-8
lines changed

1 file changed

+40
-8
lines changed

Solutions/0323. 无向图中连通分量的数目.md

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,47 @@
55

66
## 题目大意
77

8-
给定 `n` 个节点(编号从 `0``n - 1`)的图的无向边列表 `edges`,其中 `edges[i] = [u, v]` 表示节点 `u` 和节点 `v` 之间有一条无向边。
8+
**描述**给定 `n` 个节点(编号从 `0``n - 1`)的图的无向边列表 `edges`,其中 `edges[i] = [u, v]` 表示节点 `u` 和节点 `v` 之间有一条无向边。
99

10-
要求:计算该无向图中连通分量的数量。
10+
**要求**:计算该无向图中连通分量的数量。
11+
12+
**说明**
13+
14+
- $1 \le n \le 2000$。
15+
- $1 \le edges.length \le 5000$。
16+
- $edges[i].length == 2$。
17+
- $0 \le ai \le bi < n$。
18+
- $ai != bi$。
19+
- `edges` 中不会出现重复的边。
20+
21+
**示例**
22+
23+
```Python
24+
输入: n = 5 和 edges = [[0, 1], [1, 2], [3, 4]]
25+
0 3
26+
| |
27+
1 --- 2 4
28+
输出: 2
29+
30+
31+
输入: n = 5 和 edges = [[0, 1], [1, 2], [2, 3], [3, 4]]
32+
0 4
33+
| |
34+
1 --- 2 --- 3
35+
输出: 1
36+
```
1137

1238
## 解题思路
1339

14-
利用深度优先搜索和 `visited` 数组标记。
40+
### 思路 1:深度优先搜索
1541

16-
- 从未遍历过的节点 `u` 出发,连通分量数量加 1。然后遍历与 `u` 节点构成无向边,且为遍历过的的节点 `v`
17-
- 再从 `v` 出发继续深度遍历。
18-
- 直到遍历完与`u` 直接相关、间接相关的节点之后,再遍历另一个未遍历过的节点,继续上述操作。
19-
- 最后输出连通分量数目。
42+
1. 使用 `visited` 数组标记遍历过的节点,使用 `count` 记录连通分量数量。
43+
2. 从未遍历过的节点 `u` 出发,连通分量数量加 1。然后遍历与 `u` 节点构成无向边,且为遍历过的的节点 `v`
44+
3. 再从 `v` 出发继续深度遍历。
45+
4. 直到遍历完与`u` 直接相关、间接相关的节点之后,再遍历另一个未遍历过的节点,继续上述操作。
46+
5. 最后输出连通分量数目。
2047

21-
## 代码
48+
### 思路 1:代码
2249

2350
```Python
2451
class Solution:
@@ -44,3 +71,8 @@ class Solution:
4471
return count
4572
```
4673

74+
### 思路 1:复杂度分析
75+
76+
- **时间复杂度**:$O(v)$。其中 $v$ 是顶点个数。
77+
- **空间复杂度**:$O(v)$。
78+

0 commit comments

Comments
 (0)