Skip to content

Commit 3523744

Browse files
committed
Updated Course Schedule.java
1 parent 8e7e64d commit 3523744

File tree

1 file changed

+27
-25
lines changed

1 file changed

+27
-25
lines changed

Medium/Course Schedule.java

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
11
class Solution {
2-
public boolean canFinish(int numCourses, int[][] prerequisites) {
3-
Map<Integer, Set<Integer>> map = new HashMap<>();
4-
int[] indegree = new int[numCourses];
5-
for (int[] prerequisite : prerequisites) {
6-
map.computeIfAbsent(prerequisite[1], k -> new HashSet<>()).add(prerequisite[0]);
7-
indegree[prerequisite[0]]++;
8-
}
9-
Queue<Integer> queue = new LinkedList<>();
10-
Set<Integer> taken = new HashSet<>();
11-
for (int i = 0; i < numCourses; i++) {
12-
if (indegree[i] == 0) {
13-
queue.add(i);
14-
taken.add(i);
15-
}
16-
}
17-
while (!queue.isEmpty()) {
18-
int removed = queue.remove();
19-
for (Integer dependentCourse : map.getOrDefault(removed, new HashSet<>())) {
20-
indegree[dependentCourse]--;
21-
if (indegree[dependentCourse] == 0) {
22-
taken.add(dependentCourse);
23-
queue.add(dependentCourse);
2+
public boolean canFinish(int numCourses, int[][] prerequisites) {
3+
int[] indegree = new int[numCourses];
4+
Map<Integer, Set<Integer>> map = new HashMap<>();
5+
for (int[] prerequisite : prerequisites) {
6+
int course = prerequisite[0];
7+
int prereq = prerequisite[1];
8+
indegree[course]++;
9+
map.computeIfAbsent(prereq, k -> new HashSet<>()).add(course);
10+
}
11+
Queue<Integer> queue = new LinkedList<>();
12+
Set<Integer> visited = new HashSet<>();
13+
for (int i = 0; i < numCourses; i++) {
14+
if (indegree[i] == 0) {
15+
queue.add(i);
16+
visited.add(i);
17+
}
18+
}
19+
while (!queue.isEmpty()) {
20+
int removed = queue.remove();
21+
for (Integer conn : map.getOrDefault(removed, new HashSet<>())) {
22+
indegree[conn]--;
23+
if (indegree[conn] == 0) {
24+
queue.add(conn);
25+
visited.add(conn);
26+
}
27+
}
2428
}
25-
}
29+
return visited.size() == numCourses;
2630
}
27-
return taken.size() == numCourses;
28-
}
2931
}

0 commit comments

Comments
 (0)