题目描述:具体描述见原题。简单来说就是如果拓扑网中没有环路,遍历输出拓扑路径。
解题思路:检验拓扑网络中是否存在环路具体思路见leetcode-207,当拓扑网络中不存在环路时,访问出度为0顶点的顺序即为遍历路径之一。具体过程见代码。
具体代码:
func findOrder(numsCourses int, prerequisites [][]int) bool {
in := make([]int, numsCourses)
links := make([][]int, numsCourses)
next := make([]int, 0)
for _, p := range prerequisites{
in[p[0]]++
links[p[1]] = append(links[p[1]], p[0])
}
for i, v := range in {
if v == 0 {
next = append(next, i)
}
}
for i := 0; i < len(next); i++ {
n := next[i]
l := links[n]
for _, t := range l{
in[t]--
if in[t] == 0 {
next = append(next, t)
}
}
}
if (len(next) == numsCourses) { // 如果不存在环路,返回next数组
return next
}
return []int{} // 如果存在环路,按照要求返回空数组
}
补充说明:这道题其实和207解题思路一样,所以算作今天偷懒hhhhh。