国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

210. Course Schedule II

2019-11-08 02:43:37
字體:
供稿:網(wǎng)友

There are a total of n courses you have to take, labeled from 0 to n - 1. Some courses may have PRerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1] Given the total number of courses and a list of prerequisite pairs, return the ordering of courses you should take to finish all courses. There may be multiple correct orders, you just need to return one of them. If it is impossible to finish all courses, return an empty array. For example: 2, [[1,0]] There are a total of 2 courses to take. To take course 1 you should have finished course 0. So the correct course order is [0,1] 4, [[1,0],[2,0],[3,1],[3,2]] There are a total of 4 courses to take. To take course 3 you should have finished both courses 1 and 2. Both courses 1 and 2 should be taken after you finished course 0. So one correct course order is [0,1,2,3]. Another correct ordering is[0,2,1,3].

public class Solution { public int[] findOrder(int numCourses, int[][] prerequisites) { int[][] matrix = new int[numCourses][numCourses]; int[] indegree = new int[numCourses]; int[] res = new int[numCourses]; int index = 0; int count = 0; for (int i = 0; i < prerequisites.length; i++) { int ready = prerequisites[i][0]; int pre = prerequisites[i][1]; if (matrix[pre][ready] == 0) indegree[ready]++; matrix[pre][ready] = 1; } LinkedList<Integer> queue = new LinkedList<Integer>(); for (int i = 0; i < numCourses; i++) { if (indegree[i] == 0) queue.offer(i); } while (!queue.isEmpty()) { int course = queue.poll(); count++; res[index++] = course; for (int i = 0; i < numCourses; i++) { if (matrix[course][i] != 0) { if (--indegree[i] == 0) queue.offer(i); } } } if (count == numCourses) return res; return new int[0]; }}class Solution {public: vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { vector<vector <int> > matrix(numCourses, vector<int>(numCourses, 0)); vector<int> indegree(numCourses, 0); vector<int> res; int count = 0; for (int i = 0; i < prerequisites.size(); i++) { int ready = prerequisites[i].first; int pre = prerequisites[i].second; if (matrix[pre][ready] == 0) indegree[ready]++; matrix[pre][ready] = 1; } queue<int> coursequeue; for (int i = 0; i < numCourses; i++) { if (indegree[i] == 0) coursequeue.push(i); } while (!coursequeue.empty()) { int course = coursequeue.front(); coursequeue.pop(); res.push_back(course); count++; for (int i = 0; i < numCourses; i++) { if (matrix[course][i] != 0) { if (--indegree[i] == 0) coursequeue.push(i); } } } if (count == numCourses) return res; return vector<int>(); //return res; }};
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 桃源县| 南和县| 景洪市| 修文县| 安顺市| 上高县| 郸城县| 武乡县| 台北市| 东丰县| 梅州市| 阳信县| 仁怀市| 洱源县| 望江县| 寿宁县| 永州市| 安徽省| 鸡西市| 商丘市| 武清区| 都昌县| 曲水县| 天津市| 延津县| 温泉县| 互助| 儋州市| 宝坻区| 竹北市| 松阳县| 唐海县| 五寨县| 炎陵县| 凯里市| 万载县| 四川省| 大埔区| 青浦区| 驻马店市| 桐梓县|