MCPcopy Index your code
hub / github.com/neetcode-gh/leetcode / findOrder

Method findOrder

java/0210-course-schedule-ii.java:3–50  ·  view source on GitHub ↗
(int numCourses, int[][] prerequisites)

Source from the content-addressed store, hash-verified

1class Solution {
2
3 public int[] findOrder(int numCourses, int[][] prerequisites) {
4 Map<Integer, List<Integer>> adjList = new HashMap<Integer, List<Integer>>();
5 int[] indegree = new int[numCourses];
6 int[] topologicalOrder = new int[numCourses];
7
8 //creating the adjlist
9 for (int i = 0; i < prerequisites.length; i++) {
10 int post = prerequisites[i][0];
11 int pre = prerequisites[i][1];
12 List<Integer> lst = adjList.getOrDefault(
13 pre,
14 new ArrayList<Integer>()
15 );
16 lst.add(post);
17 adjList.put(pre, lst);
18
19 indegree[post] += 1;
20 }
21
22 Queue<Integer> q = new LinkedList<Integer>();
23 for (int i = 0; i < numCourses; i++) {
24 if (indegree[i] == 0) {
25 q.add(i);
26 }
27 }
28
29 int i = 0;
30 while (!q.isEmpty()) {
31 int node = q.remove();
32 topologicalOrder[i++] = node;
33
34 if (adjList.containsKey(node)) {
35 for (Integer neighbor : adjList.get(node)) {
36 indegree[neighbor]--;
37
38 if (indegree[neighbor] == 0) {
39 q.add(neighbor);
40 }
41 }
42 }
43 }
44
45 if (i == numCourses) {
46 return topologicalOrder;
47 }
48
49 return new int[0];
50 }
51}

Callers

nothing calls this directly

Calls 5

addMethod · 0.45
putMethod · 0.45
isEmptyMethod · 0.45
removeMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected