天天看点

LeetCode Course Schedule II 拓扑排序

思路:

拓扑排序。

java code:

public class Solution {
    public int[] findOrder(int numCourses, int[][] prerequisites) {
        int[] indegree = new int[numCourses];
        int[] ans = new int[numCourses];
        int number = ;
        for(int i = ; i < prerequisites.length; ++i) {
            indegree[prerequisites[i][]]++;
        }
        Queue queue = new LinkedList();
        for(int i = ; i < numCourses; ++i) {
            if(indegree[i] == ) {
                queue.add(i);
                ans[number++] = i;
            }
        }
        while(!queue.isEmpty()) {
            int course_id = Integer.parseInt(queue.poll().toString());
            for(int i = ; i < prerequisites.length; ++i) {
                if(prerequisites[i][] == course_id) {
                    indegree[prerequisites[i][]]--;
                    if(indegree[prerequisites[i][]] == ) {
                        queue.add(prerequisites[i][]);
                        ans[number++] = prerequisites[i][];
                    }
                }
            }
        }
        if(number == numCourses) {
            return ans;
        }else {
            return new int[];
        }
    }
}