| 12345678910111213141516171819202122232425262728 | func findOrder(numCourses int, prerequisites [][]int) []int {	adj := make([][]int, numCourses)	in := make(map[int]int)	for i := 0; i < numCourses; i++ {		in[i] = 0	}	for i := range prerequisites {		adj[prerequisites[i][1]] = append(adj[prerequisites[i][1]], prerequisites[i][0])		in[prerequisites[i][0]]++	}	order := make([]int, 0)	for ring := true; len(in) != 0; ring = true { // Sort by the indegree of nodes		for k, v := range in {			if v == 0 {				ring = false				order = append(order, k)				delete(in, k)				for i := range adj[k] {					in[adj[k][i]]--				}			}		}		if ring {			return []int{}		}	}	return order}
 |