| 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
 
- }
 
 
  |