[LeetCode]210. Course Schedule II

来源:互联网 发布:开淘宝网店进货渠道 编辑:程序博客网 时间:2024/06/07 04:52

https://leetcode.com/problems/course-schedule-ii/?tab=Description

课程有先修要求,要到一个正确的课程顺序





找到当前入度为零的课程加到结果list里面,同时把这个课程的后续课程入度减一,最后看结果list中是否包括所有课程

public class Solution {    public int[] findOrder(int numCourses, int[][] prerequisites) {        int[] indegree = new int[numCourses];        int[][] matrix = new int[numCourses][numCourses];        for (int[] arr : prerequisites) {            int pre = arr[1];            int now = arr[0];            indegree[now]++;            matrix[pre][now] = 1;        }        Queue<Integer> queue = new LinkedList();        for (int i = 0; i < numCourses; i++) {            if (indegree[i] == 0) {                queue.add(i);            }        }        List<Integer> list = new LinkedList();        while (!queue.isEmpty()) {            int pre = queue.poll();            list.add(pre);            for (int i = 0; i < numCourses; i++) {                if (matrix[pre][i] != 0) {                    indegree[i]--;                    if (indegree[i] == 0) {                        queue.add(i);                    }                }            }        }        if (list.size() != numCourses) {            return new int[0];        } else {            int[] res = new int[numCourses];            for (int i = 0; i < list.size(); i++) {                res[i] = list.get(i);            }            return res;        }    }}


0 0
原创粉丝点击