@@ -2,29 +2,26 @@ package g0201_0300.s0207_course_schedule
2
2
3
3
// #Medium #Top_100_Liked_Questions #Top_Interview_Questions #Depth_First_Search
4
4
// #Breadth_First_Search #Graph #Topological_Sort #Big_O_Time_O(N)_Space_O(N)
5
- // #2022_09_09_Time_416_ms_(40.10%)_Space_48.5_MB_(75.40 %)
5
+ // #2023_12_31_Time_356_ms_(10.58%)_Space_38.1_MB_(97.12 %)
6
6
7
7
class Solution {
8
8
fun canFinish (numCourses : Int , prerequisites : Array <IntArray >): Boolean {
9
- val adj: Array <ArrayList <Int >? > = arrayOfNulls<ArrayList <Int >>(numCourses)
10
- for (i in 0 until numCourses) {
11
- adj[i] = ArrayList ()
12
- }
9
+ val adj: Array <ArrayList <Int >> = Array (numCourses) { ArrayList () }
13
10
for (pre in prerequisites) {
14
- adj[pre[1 ]]? .add(pre[0 ])
11
+ adj[pre[1 ]].add(pre[0 ])
15
12
}
16
13
val colors = IntArray (numCourses)
17
14
for (i in 0 until numCourses) {
18
- if (colors[i] == WHITE && ! adj[i]?.isEmpty() !! && hasCycle(adj, i, colors)) {
15
+ if (colors[i] == WHITE && adj[i].isNotEmpty() && hasCycle(adj, i, colors)) {
19
16
return false
20
17
}
21
18
}
22
19
return true
23
20
}
24
21
25
- private fun hasCycle (adj : Array <ArrayList <Int >? >, node : Int , colors : IntArray ): Boolean {
22
+ private fun hasCycle (adj : Array <ArrayList <Int >>, node : Int , colors : IntArray ): Boolean {
26
23
colors[node] = GRAY
27
- for (nei in adj[node]!! ) {
24
+ for (nei in adj[node]) {
28
25
if (colors[nei] == GRAY ) {
29
26
return true
30
27
}
0 commit comments