楼主:
JIWP (JIWP)
2024-12-02 21:39:322097. Valid Arrangement of Pairs
思路:
用有向图去解
先找start的那个点
如果有一个点的indegree-outdegree是-1,那他就是start
注意不一定会有这样的点
如果每个点的outdegree-indegree都是0,那就随便找个点当start
用path纪录每个边 path[i]为第i点可进入的其他点
从start开始dfs
从start开始走,走过的点要从path中移除
当有一个点j其path[j]没有东西的话,他就是当前的最后一个点
就这样一直找最后一个点
最后反过来组合成题目所需就好
golang code :
func validArrangement(pairs [][]int) [][]int {
indegree, path, ans := make(map[int]int), make(map[int][]int), make([][]int,
len(pairs))
start, idx := pairs[0][0], len(pairs)-1
for _, val := range pairs {
indegree[val[1]]++
indegree[val[0]]