mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
@ -284,6 +284,48 @@ var validPath = function(n, edges, source, destination) {
|
||||
};
|
||||
```
|
||||
|
||||
### Go
|
||||
|
||||
```go
|
||||
func validPath(n int, edges [][]int, source int, destination int) bool {
|
||||
n = 200005
|
||||
father := make([]int, n)
|
||||
// 并查集初始化
|
||||
for i := 0; i < n; i++ {
|
||||
father[i] = i
|
||||
}
|
||||
|
||||
var find func(u int) int // 并查集里寻根的过程
|
||||
find = func(u int) int {
|
||||
// 如果根就是自己,直接返回
|
||||
// 如果根不是自己,就根据数组下标一层一层向下找
|
||||
if u == father[u] {
|
||||
return u
|
||||
}
|
||||
return find(father[u])
|
||||
}
|
||||
|
||||
var join func(u, v int) // 将 v->u 这条边加入并查集
|
||||
join = func(u, v int) {
|
||||
u = find(u)
|
||||
v = find(v)
|
||||
if u == v {
|
||||
return
|
||||
}
|
||||
father[v] = u
|
||||
}
|
||||
|
||||
for i := 0; i < len(edges); i++ {
|
||||
join(edges[i][0], edges[i][1])
|
||||
}
|
||||
|
||||
source = find(source)
|
||||
destination = find(destination)
|
||||
return source == destination
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
<p align="center">
|
||||
<a href="https://programmercarl.com/other/kstar.html" target="_blank">
|
||||
<img src="../pics/网站星球宣传海报.jpg" width="1000"/>
|
||||
|
Reference in New Issue
Block a user