public int[] findOrder(int numCourses, int[][] prerequisites) {
        // Write your code here
       int[] res = new int[numCourses];
        Queue<Integer> q = new LinkedList<>();
            int[] indegree = new int[numCourses];
         int index = 0;
            for (int i = 0; i < prerequisites.length; i++) {
                indegree[prerequisites[i][0]]++;
            }
            for (int i = 0; i < indegree.length; i++) {
                if (indegree[i] == 0) {
                    q.offer(i);
                }
            }

        int visit = 0;
        while (!q.isEmpty()) {
            int tmp = q.poll();
            res[index++] = tmp;
            visit++;
            for (int i = 0; i < prerequisites.length; i++) {
                if (tmp == prerequisites[i][1]){
                    indegree[prerequisites[i][0]]--;
                     if (indegree[prerequisites[i][0]] == 0) 
                        q.offer(prerequisites[i][0]);
                }
            }
        }
        if (visit == numCourses) {
        return res;
        } else {
            return new int[0];
        }
    }

results matching ""

    No results matching ""