Skip to content

Instantly share code, notes, and snippets.

@saldisobi
Created April 9, 2023 17:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save saldisobi/bffa6b35f3538615a24735a4d49af9e4 to your computer and use it in GitHub Desktop.
Save saldisobi/bffa6b35f3538615a24735a4d49af9e4 to your computer and use it in GitHub Desktop.
class Solution {
fun canFinish(numCourses: Int, prerequisites: Array<IntArray>): Boolean {
val indegree = IntArray(numCourses)
prerequisites.forEach{preArr->
val dependentCourse = preArr[0]
indegree[dependentCourse]++
}
val queue = LinkedList<Int>()
indegree.forEachIndexed{index, dependencies->
if(dependencies == 0){
queue.add(index)
}
}
if(queue.isEmpty()){
return false
}
var index = 0
while(!queue.isEmpty()){
val courseDone = queue.remove()
index++
prerequisites.forEach{preArr->
if(courseDone == preArr[1]){
val dependentCourse = preArr[0]
indegree[dependentCourse]--
if(indegree[dependentCourse] == 0){
queue.add(dependentCourse)
}
}
}
}
return index == numCourses
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment