Interview 150

Course Schedule II

Problem
LC 210
File
interview150_LC210CourseScheduleII.java
Path
pkg5leetcode/interview150/interview150_LC210CourseScheduleII.java
Package
pkg5leetcode.interview150
Command
java pkg5leetcode/interview150/interview150_LC210CourseScheduleII.java

LeetCode solutions

There is no in-browser runner. This is the file from the curriculum, unchanged.

pkg5leetcode/interview150/interview150_LC210CourseScheduleII.java
1package pkg5leetcode.interview150;2 3/** LC 210 Course Schedule II */4import java.util.*;5 6public class interview150_LC210CourseScheduleII {7  static int[] findOrder(int n, int[][] prereq) {8    List<List<Integer>> g = new ArrayList<>();9    int[] indeg = new int[n];10    for (int i = 0; i < n; i++) g.add(new ArrayList<>());11    for (int[] e : prereq) { g.get(e[1]).add(e[0]); indeg[e[0]]++; }12    Queue<Integer> q = new ArrayDeque<>();13    for (int i = 0; i < n; i++) if (indeg[i] == 0) q.add(i);14    int[] order = new int[n]; int idx = 0;15    while (!q.isEmpty()) {16      int u = q.poll(); order[idx++] = u;17      for (int v : g.get(u)) if (--indeg[v] == 0) q.add(v);18    }19    return idx == n ? order : new int[0];20  }21 22  public static void main(String[] args) {23    System.out.println(Arrays.toString(findOrder(2, new int[][]{{1,0}})));24  }25}