leetcode Course Schedule II
来源:互联网 发布:成都易森画室知乎 编辑:程序博客网 时间:2024/05/16 16:59
这道题可以用拓扑排序去做,
对于图的拓扑排序,有邻接表和邻接矩阵的做法,邻接表会快一些。
邻接矩阵的复杂度O(V*V) 邻接表复杂度(V+E)
class Solution {public: vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> res; int lc[numCourses]; memset(lc,0,sizeof(int)*numCourses); vector<vector<int> >mm(numCourses); vector<pair<int, int> >& p=prerequisites; for(int i=0;i<p.size();i++){ int m=p[i].second; int n=p[i].first; //increse the numcourses needed prepare mm[m].push_back(n); lc[n]++; } queue<int> q; for(int i=0;i<numCourses;i++){ if(lc[i]==0)q.push(i); } while(!q.empty()){ int curv=q.front(); res.push_back(curv); q.pop(); for(int i=0;i<mm[curv].size();i++){ int n=mm[curv][i]; lc[n]--; if(!lc[n]){ q.push(n); } } } for(int i=0;i<numCourses;i++){ if(lc[i]){ res.clear(); return res; } } return res; }};
class Solution {public: vector<int> findOrder(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> res; bool visit[numCourses]; int lc[numCourses]; memset(visit,0,sizeof(bool)*numCourses); memset(lc,0,sizeof(int)*numCourses); bool mm[numCourses][numCourses]; memset(mm,0,sizeof(bool)*numCourses*numCourses); vector<pair<int, int> >& p=prerequisites; for(int i=0;i<p.size();i++){ int m=p[i].second; int n=p[i].first; //increse the numcourses needed prepare if(!mm[m][n]){ lc[n]++; mm[m][n]=true; } } queue<int> q; for(int i=0;i<numCourses;i++){ if(lc[i]==0)q.push(i); } while(!q.empty()){ int curv=q.front(); res.push_back(curv); q.pop(); for(int i=0;i<numCourses;i++){ if(mm[curv][i]){ lc[i]--; if(!lc[i]){ q.push(i); } } } } for(int i=0;i<numCourses;i++){ if(lc[i]){ res.clear(); return res; } } return res; }};
0 0
- [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
- Spring的数据源配置 DBCP、C3P0、BoneCP
- busybox init初始化过程
- jvm 剖析
- html中的position
- springmvc与struts2对比
- leetcode Course Schedule II
- Java —— 性能优化
- 推荐系统实践--基于用户的协同过滤算法
- Eclipse代码编辑器配置
- <meta charset="utf-8"/>与<meta http-equiv="Content-Type">
- Caffe安装指南
- 安卓NDK开发入门DEMO
- 挑战面试编程:左移字符串
- ContentProvider的用法浅析