LeetCode Course Schedule II 拓扑排序

来源:互联网 发布:淘宝号信誉度查询 编辑:程序博客网 时间:2024/05/16 02:35

思路:

拓扑排序。

java code:

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