Saturday, March 19, 2022

Leet Code 207. Course Schedule I - Kahn's Algorithm

https://leetcode.com/problems/course-schedule/


Same as Kahn's Algorithm, here we need to return True -> if all nodes are traversed i.e. all dependencies will be resolved, else False
package pep.Day44;

import java.util.*;

public class LeetCode_207_Course_Schedule {
public static void main(String[] args) {
System.out.println(canFinish(2, new int[][]{{1, 0}}));
}

public static boolean canFinish(int n, int[][] pre) {

ArrayList<Integer>[] graph = new ArrayList[n];
for (int i = 0; i < n; i++) {
graph[i] = new ArrayList<>();
}

int[] indegree = new int[n];

for (int[] p : pre) {
graph[p[0]].add(p[1]);
indegree[p[1]]++;
}

Queue<Integer> que = new LinkedList<>();
for (int i = 0; i < indegree.length; i++) {
if (indegree[i] == 0)
que.add(i);
}

ArrayList<Integer> ans = new ArrayList<Integer>();

while (!que.isEmpty()) {
int rem = que.remove();

ans.add(rem);

for (int nbr : graph[rem]) {
if (--indegree[nbr] == 0) {
que.add(nbr);
}
}

}

return n == ans.size();
}
}

No comments:

Post a Comment

Diagonal Traversal

 eg.  1       2       3       4 5      6       7       8 9    10    11     12 13  14   15    16 Output: 1 6 11 16 2 7 12 3 8 4  Approach:...