Skip to content

Commit 8bc0529

Browse files
authored
Merge pull request #2446 from t3chkid/main
add Kotlin solution for 1462. Course Schedule IV
2 parents 8a34405 + 745d290 commit 8bc0529

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

Diff for: kotlin/1462-course-schedule-iv.kt

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution {
2+
fun checkIfPrerequisite(
3+
numCourses: Int,
4+
prerequisites: Array<IntArray>,
5+
queries: Array<IntArray>
6+
): List<Boolean> {
7+
// { course -> [ immediate pre-requisites ] }
8+
val adjacencyList = mutableMapOf<Int, MutableList<Int>>()
9+
prerequisites.forEach { (immediatePrerequisite, course) ->
10+
adjacencyList.getOrPut(course) { mutableListOf() }.add(immediatePrerequisite)
11+
}
12+
// { course -> [ complete set of prerequisites including transitive pre-requisites ] }
13+
val prerequisitesMap = mutableMapOf<Int, HashSet<Int>>()
14+
fun dfs(startCourse: Int, currentCourse: Int = startCourse) {
15+
if (currentCourse in (prerequisitesMap[startCourse] ?: hashSetOf())) return
16+
if (currentCourse != startCourse) {
17+
prerequisitesMap.getOrPut(startCourse) { hashSetOf() }.add(currentCourse)
18+
}
19+
for (immediatePrerequisite in adjacencyList[currentCourse] ?: mutableListOf()) {
20+
dfs(startCourse, immediatePrerequisite)
21+
}
22+
}
23+
24+
for (course in 0 until numCourses) {
25+
dfs(startCourse = course)
26+
}
27+
28+
val resultantList = mutableListOf<Boolean>()
29+
queries.forEach { (prerequisite, course) ->
30+
resultantList.add(prerequisitesMap[course]?.let { prerequisite in it } ?: false)
31+
}
32+
return resultantList
33+
}
34+
}

0 commit comments

Comments
 (0)