Course Schedule II

来源:互联网 发布:地图矢量化软件 编辑:程序博客网 时间:2024/06/06 15:49
public class Solution {    public int[] findOrder(int n, int[][] edges) {        if (edges == null) {            throw new IllegalArgumentException("abc");        }        int[] courses = new int[n];        List<Integer> orderList = new LinkedList<>();        for (int i = 0; i < edges.length; i++) {            courses[edges[i][0]]++;        }        Queue<Integer> queue = new LinkedList<>();        for (int i = 0; i < n; i++) {            if (courses[i] == 0) {                queue.offer(i);                orderList.add(i);            }        }        int num = queue.size();        while (!queue.isEmpty()) {            int idx = queue.poll();            for (int i = 0; i < edges.length; i++) {                if (edges[i][1] == idx) {                    courses[edges[i][0]]--;                    if (courses[edges[i][0]] == 0) {                        num++;                        queue.offer(edges[i][0]);                        orderList.add(edges[i][0]);                    }                }            }        }        if (num != n) {            return new int[0];        } else {            int[] res = new int[n];            for (int i = 0; i < n; i++) {                res[i] = orderList.get(i);            }            return res;        }    }}

0 0
原创粉丝点击