207. Course Schedule(week 4)
来源:互联网 发布:java输出回文数 编辑:程序博客网 时间:2024/04/29 03:59
207. Course Schedule
拓扑排序思路:
用一个队列维护所有入度为0的节点,每次弹出一个节点v,查看从v可达的所有节点u;将u的入读减一,更新入度的过程的时候,若u的入度此时为0, 则将u加入队列。在队列为空时,检查所有节点的入度,若所有节点入度都为0, 则存在这样的一个拓扑排序 —— 有向图中不存在环。找不到最短路径的题目,就找个拓扑排序的,
class Solution {public: bool canFinish(int numCourses, vector<pair<int, int>>& prerequisites) { int len = prerequisites.size(); //初始化度 int degree[numCourses]; memset(degree,0,sizeof(degree)); for(int i = 0; i < len; i++){ degree[prerequisites[i].first]++; } //这里用队列也行,其他的STL也可以 queue<int> myqueue; int result = 0; for(int i = 0;i<numCourses;i++) { if(degree[i]==0){ myqueue.push(i); result++; } } while(!myqueue.empty()){ int node = myqueue.front(); myqueue.pop(); for(int i = 0; i < len; i++){ if(prerequisites[i].second==node){ degree[prerequisites[i].first]--; if(!degree[prerequisites[i].first]){ myqueue.push(prerequisites[i].first); result++; } } } } //如果全部都已经入过队列就返回true,否则喂false if(result==numCourses){ return true; } else return false; }};
0 0
- 207. Course Schedule(week 4)
- LeetCode week 12 : Course Schedule
- [leetcode] 207.Course Schedule
- 207.Course Schedule
- Leetcode 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule LeetCode
- 207. Course Schedule
- leetcode 207. Course Schedule
- 207. Course Schedule
- leetcode.207. Course Schedule
- LeetCode 207. Course Schedule
- 【LeetCode】207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- 207. Course Schedule
- [leetcode] 207. Course Schedule
- leetcode-207. Course Schedule
- Linux如何修改CodeBlocks主题
- B-王小二切饼
- CIDR与NAT
- 编译原理 有一语法制导翻译如下所示:
- matlab绘制多曲线对比图
- 207. Course Schedule(week 4)
- UBuntu国内镜像地址下载
- 主动信息收集之主机发现的一些脚本
- 动态规划之网易2017年秋招编程题之暗黑的字符串
- 动态插入表格行的两种方法
- 博客帮助文档
- 二叉搜索树
- 配置WampServer3的VirtualHost
- JAVA中HashMap和LinkedHashMap以及TreeMap的区别