add new solutions
This commit is contained in:
parent
0c73608ce5
commit
d798d5e8c9
19 changed files with 661 additions and 4 deletions
34
solutions/2/q210/solution.go
Normal file
34
solutions/2/q210/solution.go
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
package q210
|
||||
|
||||
func findOrder(numCourses int, prerequisites [][]int) []int {
|
||||
ndeps := make([]int, numCourses)
|
||||
revDeps := make([][]int, numCourses)
|
||||
ret := make([]int, 0, numCourses)
|
||||
|
||||
for i := range prerequisites {
|
||||
c, dep := prerequisites[i][0], prerequisites[i][1]
|
||||
ndeps[c]++
|
||||
revDeps[dep] = append(revDeps[dep], c)
|
||||
}
|
||||
|
||||
for i := range ndeps {
|
||||
if ndeps[i] == 0 {
|
||||
ret = append(ret, i)
|
||||
}
|
||||
}
|
||||
for i := 0; i < len(ret); i++ {
|
||||
for _, c := range revDeps[ret[i]] {
|
||||
ndeps[c]--
|
||||
if ndeps[c] == 0 {
|
||||
ret = append(ret, c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if len(ret) != numCourses {
|
||||
return nil
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
var _ = findOrder
|
||||
Loading…
Add table
Add a link
Reference in a new issue