国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 离岛区| 安仁县| 连平县| 邮箱| 安图县| 台湾省| 宁阳县| 林周县| 清水河县| 无棣县| 嘉峪关市| 治县。| 外汇| 灵武市| 弥勒县| 赫章县| 澄迈县| 星子县| 永清县| 富顺县| 阳春市| 邵阳市| 色达县| 富川| 吴江市| 长武县| 通化市| 霞浦县| 防城港市| 噶尔县| 陇南市| 石林| 石泉县| 祁东县| 股票| 兰西县| 从化市| 平安县| 集安市| 菏泽市| 青阳县|