[LeetCode]Course Schedule
2015-07-24 16:05
411 查看
解题思路:
拓扑排序,判断 有向图中是否存在 环。
BFS和DFS都可以实现,解释可以参考 /article/9865291.html
这里之所以要记录一下,是因为用到了C++11的新的语法特性 : auto,自动检测变量类型
拓扑排序,判断 有向图中是否存在 环。
BFS和DFS都可以实现,解释可以参考 /article/9865291.html
这里之所以要记录一下,是因为用到了C++11的新的语法特性 : auto,自动检测变量类型
//原来: vector<pair<int, int> >::iterator it = prerequisites.begin(); //现在: auto it = prerequisites.begin(); class Solution { public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { vector<int> inDegrees(numCourses, 0); auto it = prerequisites.begin(); while(it != prerequisites.end()){ inDegrees[it->first] ++; it ++; } queue<int> zeroIndegreeArray; // for (int i = 0 ; i < inDegrees.size(); ++i){ // if (inDegrees[i] == 0) // zeroIndegreeArray.push(i); // } for (auto i = 0 : inDegrees.size()){ if (inDegrees[i] == 0) zeroIndegreeArray.push(i); } while(!zeroIndegreeArray.empty()){ int id = zeroIndegreeArray.front(); zeroIndegreeArray.pop(); it = prerequisites.begin(); while(it != prerequisites.end()){ if (it->second == id){ int vex = it->first; it = prerequisites.erase(it); --inDegrees[vex]; if (inDegrees[vex] == 0){ zeroIndegreeArray.push(vex); } }else{ it ++; } } } if (prerequisites.size() != 0) return false; return true; } };
相关文章推荐
- POJ 1018 Communication System
- Model绑定机制3:集合+字典
- 一元二次方程求解
- 例如找出令人信服的权威C++中间malloc与new
- lua
- java keytool
- Linux: /dev/random , /dev/urandom
- iOS解析.crash文件崩溃报告
- IOS 界面传值
- HDU 5308 I Wanna Become A 24-Point Master(找规律+模拟)
- 使用Profiler工具分析内存占用情况
- Model绑定机制2:数组
- HDU - 5067 Harry And Dig Machine (bfs + 状态压缩)
- HTTP Status 500 - Unable to compile class for JSP问题小结(解决)
- 程序中三种不同的出错处理方式比较
- 关于tomcat+MyEclipse的安装与配置
- sql 找到前三
- 浮点二进制表示
- c++ 获取本地ip地址
- IIS下PHP的ISAPI和FastCGI比较