Leetcode Course Schedule II
2017-01-06 10:30
344 查看
题意:给定一些课程的先后顺序,输出一个可行的修课顺序,如果没有则输出空集。
思路:简单拓扑排序,不断寻找入度为0的点。
class Solution {
public:
vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) {
vector<int> indegree(numCourses, 0);
vector<vector<int> >dm;
for(int i = 0; i < numCourses; ++ i) {
vector<int> temp;
dm.push_back(temp);
}
for(int i = 0; i < prerequisites.size(); ++ i) {
vector<int> temp = dm[prerequisites[i].second];
temp.push_back(prerequisites[i].first);
dm[prerequisites[i].second] = temp;
indegree[prerequisites[i].first] ++;
}
vector<int> re;
for(int i = 0; i < numCourses; ++ i) {
int node = -1;
for(int j = 0; j < indegree.size(); ++ j) {
if(indegree[j] == 0) {
indegree[j] = -1;
node = j;
break;
}
}
if(node == -1) {
vector<int> temp;
return temp;
}
for(int j = 0; j < dm[node].size(); ++ j) {
indegree[dm[node][j]] --;
}
re.push_back(node);
}
return re;
}
};
思路:简单拓扑排序,不断寻找入度为0的点。
class Solution {
public:
vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) {
vector<int> indegree(numCourses, 0);
vector<vector<int> >dm;
for(int i = 0; i < numCourses; ++ i) {
vector<int> temp;
dm.push_back(temp);
}
for(int i = 0; i < prerequisites.size(); ++ i) {
vector<int> temp = dm[prerequisites[i].second];
temp.push_back(prerequisites[i].first);
dm[prerequisites[i].second] = temp;
indegree[prerequisites[i].first] ++;
}
vector<int> re;
for(int i = 0; i < numCourses; ++ i) {
int node = -1;
for(int j = 0; j < indegree.size(); ++ j) {
if(indegree[j] == 0) {
indegree[j] = -1;
node = j;
break;
}
}
if(node == -1) {
vector<int> temp;
return temp;
}
for(int j = 0; j < dm[node].size(); ++ j) {
indegree[dm[node][j]] --;
}
re.push_back(node);
}
return re;
}
};
相关文章推荐
- [leetcode] Course Schedule II
- Leetcode 210 Course Schedule II 拓扑排序
- [LeetCode] Course schedule II
- Java for LeetCode 210 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-210: Course Schedule II
- [Leetcode] Course Schedule II
- [leetcode-210]course scheduleII(java)
- #leetcode#Course Schedule II
- LeetCode Course Schedule II
- [LeetCode]Course Schedule II
- LeetCode 210 Course Schedule II
- leetcode -- Course Schedule I && II -- TopSort重点