LeetCode Course Schedule BFS
来源:互联网 发布:html小游戏源码 编辑:程序博客网 时间:2024/06/05 18:33
思路:
BFS + 拓扑排序
Status:MLE
Reason:用二维数组 vector<vector<int>>
存图信息,有太多没用的信息0,占用了很大空间。
看了DISCUSS后的优化:
用 vector<unordered_set<int>>
存图信息,表示为每个节点对应连接到哪些节点。
class Solution {public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> inDegree(numCourses, 0); vector<vector<int>> graph(numCourses, vector<int>(numCourses, 0)); queue<int> q; for(int i = 0; i < numCourses; ++i) { if(inDegree[i] == 0) q.push(i); } while(!q.empty()) { int start_node_id = q.front(); q.pop(); for(int i = 0; i < numCourses; ++i) { if(graph[start_node_id][i] == 1) { inDegree[i]--; if(inDegree[i] == 0) { q.push(i); } } } } for(int i = 0; i < numCourses; ++i) { if(inDegree[i] != 0) { return false; } } return true; }};
Staus:AC
class Solution {public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<unordered_set<int>> need(numCourses); for (size_t i = 0; i != prerequisites.size(); ++i) need[prerequisites[i].second].insert(prerequisites[i].first); vector<int> indegree(numCourses); for (int i = 0; i != numCourses; ++i) for(auto it = need[i].begin(); it != need[i].end(); ++it) ++indegree[*it]; queue<int> zeros; for (int i = 0; i != numCourses; ++i) if (indegree[i] == 0) zeros.push(i); while (!zeros.empty()) { int seq = zeros.front(); zeros.pop(); for (auto it = need[seq].begin(); it != need[seq].end(); ++it) if (--indegree[*it] == 0) zeros.push(*it); --numCourses; } return numCourses == 0; }};
0 0
- LeetCode Course Schedule BFS
- [Leetcode] #207#210 Course Schedule I & II (BFS)
- 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
- struts2-ajax-json应用实例
- Hadoop WordCount详解(2.7.1版本)
- 关于MongoDB的几个重要的网站
- js写一个日期Ⅱ(完结)
- IOS笔记UI--main函数
- LeetCode Course Schedule BFS
- 习题7-1 uva 208(剪枝)
- 使用runtime将任意对象中所有属性转换为字典
- css3 @-webkit-keyframes 这种格式什么意思
- markdown使用手册
- 获取盘符的路径/文件/创建时间
- QQ第三方登录
- lightOJ 1005 【规律题】
- android 解决fragment中有百度高德等地图,切换出现闪一下黑屏的问题