Leetcode -- Course Schedule II
来源:互联网 发布:大数据产业获政策扶持 编辑:程序博客网 时间:2024/06/01 11:41
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]
.
Note:
The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
class Solution {public: vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { vector<pair<int, int>>::iterator it; vector<int> in(numCourses,0); for(int i=0;i<prerequisites.size();++i) in[prerequisites[i].first]++; queue<int> zero; vector<int> res; for(int i=0;i<numCourses;++i) if(in[i]==0) zero.push(i); while(!zero.empty()) { int cur = zero.front(); zero.pop(); res.push_back(cur); for(it=prerequisites.begin();it!=prerequisites.end();) { if(it->second==cur) { in[it->first]--; if(in[it->first]==0) zero.push(it->first); prerequisites.erase(it); } else it++; } } if(res.size()<numCourses) res.clear(); return res; }};
- [leetcode]Course Schedule II
- leetcode - Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- leetcode:Course Schedule II
- [LeetCode] Course Schedule II
- Leetcode Course Schedule II
- 【leetcode】Course Schedule II
- leetcode Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- #leetcode#Course Schedule II
- LeetCode Course Schedule II
- leetcode Course Schedule II
- Course Schedule II -- leetcode
- Leetcode: Course Schedule II
- [Leetcode] Course Schedule II
- LeetCode -- Course Schedule II
- 链表问题----复杂链表的复制+二叉搜索树与双向链表(Java)
- 【noip2011】铺地毯
- iphone各个系列手机最新的尺寸资料(更新到iphone6s)
- Shell脚本之监视主进程的运行状态,异常退出后自动重启
- postgresql 存储过程时 如何把查到数据放到数组中,计算出数组中数字个数字
- Leetcode -- Course Schedule II
- 日记账GL追溯到AR模块
- iOS UI设计: 在Autolayout的布局上用constraint实现动画
- codeforces-388A-Fox and Box Accumulation
- linux安装mysql
- 【noip2005】陶陶摘苹果
- 编译器常用优化方法
- 在EditText里面设置输入两位小数
- javascript使用注意的问题