207. Course Schedule
来源:互联网 发布:公共网络摄像头直播 编辑:程序博客网 时间:2024/06/06 04:50
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, is it possible for you to finish all courses?
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 it is possible.
2, [[1,0],[0,1]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0, and to take course 0 you should also have finished course 1. So it is impossible.
Note:
- The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
- You may assume that there are no duplicate edges in the input prerequisites.
click to show more hints.
Subscribe to see which companies asked this question.
给出数字n代表有n门课,编号0~n-1,一些课是有要求要先上一些别的课,问是否能修完全部课。这里能修完就相当于需求图中没有回环,所以可以用拓扑排序的方法解决问题。先找一个入度为0的节点,把它摘除,然后他指向的节点的入度就减一,减一的过程中如果有节点的入度变为0,就入栈,方便下次的摘除;然后循环摘除节点,直到没有入度为0的节点为止。循环过程中进行计数,如果摘除的节点个数小于所有节点数,说明图中有环,返回false,否则返回true。
代码:
class Solution{public:bool canFinish(int numCourses, vector<pair<int, int> >& prerequisites) {vector<vector<int> > graph(numCourses);vector<int> in_cnt(numCourses);for(int i = 0; i < prerequisites.size(); ++i){graph[prerequisites[i].first].push_back(prerequisites[i].second);in_cnt[prerequisites[i].second]++;}stack<int> stk;int cnt = 0;for(int i = 0; i < numCourses; ++i){if(in_cnt[i] == 0) stk.push(i);}while(!stk.empty()){int cur = stk.top();stk.pop();++cnt;for(int i = 0; i < graph[cur].size(); ++i){if(--in_cnt[graph[cur][i]] == 0){stk.push(graph[cur][i]);}}}return cnt >= numCourses;}};
- [leetcode] 207.Course Schedule
- 207.Course Schedule
- Leetcode 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule LeetCode
- 207. Course Schedule
- leetcode 207. Course Schedule
- 207. Course Schedule
- leetcode.207. Course Schedule
- LeetCode 207. Course Schedule
- 【LeetCode】207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- [leetcode] 207. Course Schedule
- leetcode-207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- JAVA WEB之jsp内置对象
- TensorBoard使用
- ORA-24323: value not allowed ORA-01089
- Unable to initialize any output collector(MapReduce执行到reduce过程失败抛出IO)
- 1024. 科学计数法 (20)
- 207. Course Schedule
- Linux系统 ISO下载
- spring cloud微服务框架 第一天
- VS2015 编译问题记录(更新)
- SpringMVC利用Column 注解约束double类型的精度
- 外部中断0电平触发
- 【Shiro】Apache Shiro架构之自定义realm
- cenos6 搭建 lnmp 手稿
- 借力使力不费力——文件下载篇