210.Course Schedule II

Might Duplicated

class Solution {
    public int[] findOrder(int numCourses, int[][] prerequisites) {
        int[][] matrix = new int[numCourses][numCourses];
        int[] indegree = new int[numCourses];
        int[] ans = new int[numCourses];
        //E Part
        for(int[] pre : prerequisites){
            int preCourse = pre[1];
            int readyCourse = pre[0];
            if(matrix[preCourse][readyCourse] == 0){
                indegree[readyCourse]++;
                matrix[preCourse][readyCourse] = 1;
            }
        }

        Deque<Integer> queue = new ArrayDeque<>();
        for(int i = 0 ; i < numCourses; i++){
            if(indegree[i] == 0)
                queue.add(i);
        }
        int count = 0;
        while(!queue.isEmpty()){
            int course = queue.poll();
            ans[count] = course;
            count++;
            for(int i = 0; i < numCourses; i++){
                if(matrix[course][i] != 0){
                    if(--indegree[i] == 0){
                        queue.add(i);
                    }
                }
            }
        }
        if(count == numCourses)
            return ans;
        else
            return new int[0];
    }
}

results matching ""

    No results matching ""