Leetcode编程练习:课程编排
来源:互联网 发布:手机淘宝不能搜索宝贝 编辑:程序博客网 时间:2024/04/30 04:31
题目原文:(id=210)
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]
.
vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { int n = numCourses;vector<vector<int> > adj(n);vector<int> indegree(n, 0);for (int i = 0;i < prerequisites.size();i++) {adj[prerequisites[i].second].push_back(prerequisites[i].first);indegree[prerequisites[i].first]++;}vector<int> seq;queue<int> open;for (int i = 0;i < n;i++) {if (indegree[i] == 0) {open.push(i);seq.push_back(i);}}while (open.size()) {int pos = open.front();open.pop();for (int i = 0;i < adj[pos].size();i++) {int nw = adj[pos][i];indegree[nw]--;if (indegree[nw] == 0) {open.push(nw);seq.push_back(nw);}}}if (seq.size() == n) return seq;else return vector<int>(); }
- Leetcode编程练习:课程编排
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode 编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- LeetCode编程练习
- Spark源码学习(二)---Master和Worker的启动以及Actor通信流程
- 我能告诉你的
- 165. Compare Version Numbers
- 高手在民间!明知广告却让人欲罢不能的营销手段
- Coons曲面
- Leetcode编程练习:课程编排
- eclipse插件之preference 开发
- 162. Find Peak Element
- HDU5727 Necklace (全排列+二分匹配)
- QT、MFC、vc++
- mfc 编辑控件显示系统时间
- HDU 5269 ZYB loves Xor I [01字典树]【思维】
- python--递归计算n的价乘
- ios网络请求框架,基于AFNetworking封装,其中缓存模块依赖TMCache,JSON解析模块依赖MJExtension,使用更加简单方便