Topological sorting - Kahn’s algorithm
Problem: course-schedule-ii
Solution:
// Khan's algorithm for topological sorting
import java.util.*;
class Solution {
public int[] findOrder(int n, int[][] prerequisites) {
new ArrayList<List<Integer>>();
var graph = for (int i = 0; i < n; i++) {
add(new ArrayList<>());
graph.
}new int[n];
var in = for (var p : prerequisites) {
get(p[1]).add(p[0]);
graph.0]]++;
in[p[
}
new ArrayDeque<Integer>();
var queue = for (int i = 0; i < n; i++) {
if (in[i] == 0) {
add(i);
queue.
}
}
new ArrayList<Integer>();
var taken = while (!queue.isEmpty()) {
remove();
var node = queue.add(node);
taken.
for (var v : graph.get(node)) {
in[v]--;if (in[v] == 0) {
add(v);
queue.
}
}
}
if (taken.size() < n) return new int[]{};
new int[taken.size()];
var res = for (int i = 0; i < taken.size(); i++) {
get(i);
res[i] = taken.
}return res;
} }