add new solutions
This commit is contained in:
parent
9c2c959a9b
commit
9a10695e8c
29 changed files with 1074 additions and 2 deletions
37
solutions/2/q207/solution.go
Normal file
37
solutions/2/q207/solution.go
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
package q207
|
||||
|
||||
func canFinish(numCourses int, prerequisites [][]int) bool {
|
||||
nDeps := make([]int, numCourses)
|
||||
revDeps := make([][]int, numCourses)
|
||||
|
||||
for i := range prerequisites {
|
||||
course, prereq := prerequisites[i][0], prerequisites[i][1]
|
||||
nDeps[course]++
|
||||
revDeps[prereq] = append(revDeps[prereq], course)
|
||||
}
|
||||
|
||||
queue := []int{}
|
||||
for i := range numCourses {
|
||||
if nDeps[i] == 0 && len(revDeps) > 0 {
|
||||
queue = append(queue, i)
|
||||
}
|
||||
}
|
||||
for ; len(queue) > 0; queue = queue[1:] {
|
||||
course := queue[0]
|
||||
for _, r := range revDeps[course] {
|
||||
nDeps[r]--
|
||||
if nDeps[r] == 0 {
|
||||
queue = append(queue, r)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for _, n := range nDeps {
|
||||
if n > 0 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
var _ = canFinish
|
||||
Loading…
Add table
Add a link
Reference in a new issue