leetcode:Course Schedule
来源:互联网 发布:javascript php 编辑:程序博客网 时间:2024/06/06 04:03
题目:
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.
题目解释:就是判断有向图是否有回路思路:根据以前学数据结构上面介绍的方法就可解决,简单来说就是不断将图中入度为零的点从图中砍掉,最后图中没有点了即为非回路图,若最后还有点即为回路图。代码实现中可用一个队列保存入度为零的节点,队列为空即退出循环,并进去最后的判断。
代码:
class Solution {public:bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) {int L = prerequisites.size();vector<unordered_set<int>> dppre(numCourses);for (int i = 0; i < L; i++) {dppre[prerequisites[i].first].insert(prerequisites[i].second);}queue<int> qu;for (int i = 0; i < numCourses; i++) {if (dppre[i].empty()) {qu.push(i);}}while (!qu.empty()) {int tmp = qu.front();qu.pop();for (int i = 0; i < numCourses; i++) {if (i == tmp) continue;if (dppre[i].find(tmp) != dppre[i].end()) {dppre[i].erase(tmp);if (dppre[i].empty()) {qu.push(i);}}}}for (int i = 0; i < numCourses; i++) {if (!dppre[i].empty()) return false;}return true;}};
- Leetcode-Course Schedule && Course Schedule II
- leetcode-Course Schedule
- LeetCode 207 - Course Schedule
- [LeetCode] Course Schedule
- LeetCode Course Schedule
- [leetcode] Course Schedule
- Leetcode Course Schedule
- [leetcode]Course Schedule
- leetcode:Course Schedule
- [leetcode]Course Schedule II
- leetcode - Course Schedule II
- LeetCode Course Schedule II
- [leetcode] Course Schedule II
- [leetcode]Course Schedule
- leetcode:Course Schedule II
- [LeetCode] Course Schedule II
- Leetcode Course Schedule II
- leetcode 207: Course Schedule
- markdown 删除线
- 计算表达式
- BZOJ 2342 [Shoi2011]双倍回文
- AFNetWorking(3.0)源码分析(二)——AFURLSessionManager
- 上下布局——内容外撑
- leetcode:Course Schedule
- 二分应用--衣服晾干问题
- 上下布局——内容内撑
- 1055. The World's Richest (25)
- css3多重背景详解
- Java private和protected修饰的内部类调用方法
- UVA 11401 Triangle Counting [递推]
- MySQL如何安装和启动
- pta--哈利波特的考试