Leetcode: Course Schedule II
2015-11-03 16:01
393 查看
There are a total of n courses you have to take, labeled from 0 to n - 1.
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]
Given the total number of courses and a list of prerequisite pairs, return the ordering of courses you should take to finish all courses.
There may be multiple correct orders, you just need to return one of them. If it is impossible to finish all courses, return an empty array.
For example:
2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So the correct course order is [0,1]
4, [[1,0],[2,0],[3,1],[3,2]]
There are a total of 4 courses to take. To take course 3 you should have finished both courses 1 and 2. Both courses 1 and 2 should be taken after you finished course 0. So one correct course order is [0,1,2,3]. Another correct ordering is[0,2,1,3].
Note:
The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
click to show more hints.
Hide Company Tags Facebook Zenefits
Hide Tags Depth-first Search Breadth-first Search Graph Topological Sort
Hide Similar Problems (M) Course Schedule (H) Alien Dictionary
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair: [0,1]
Given the total number of courses and a list of prerequisite pairs, return the ordering of courses you should take to finish all courses.
There may be multiple correct orders, you just need to return one of them. If it is impossible to finish all courses, return an empty array.
For example:
2, [[1,0]]
There are a total of 2 courses to take. To take course 1 you should have finished course 0. So the correct course order is [0,1]
4, [[1,0],[2,0],[3,1],[3,2]]
There are a total of 4 courses to take. To take course 3 you should have finished both courses 1 and 2. Both courses 1 and 2 should be taken after you finished course 0. So one correct course order is [0,1,2,3]. Another correct ordering is[0,2,1,3].
Note:
The input prerequisites is a graph represented by a list of edges, not adjacency matrices. Read more about how a graph is represented.
click to show more hints.
Hide Company Tags Facebook Zenefits
Hide Tags Depth-first Search Breadth-first Search Graph Topological Sort
Hide Similar Problems (M) Course Schedule (H) Alien Dictionary
Solution
[code]class Solution(object): def findOrder(self, numCourses, prerequisites): """ :type numCourses: int :type prerequisites: List[List[int]] :rtype: List[int] """ dictin = {} for temp in range(numCourses): dictin[temp] = 0 for temp in prerequisites: dictin[temp[0]] += 1 queue, has_finish = [], [] for key,value in dictin.iteritems(): if value==0: queue.append(key) count = len(queue) while queue!=[]: elem = queue.pop(0) has_finish.append(elem) for temp in prerequisites: if elem==temp[1]: dictin[temp[0]] -= 1 # the in order of that node is decreased by 1 if dictin[temp[0]]==0: queue.append(temp[0]) count += 1 return has_finish if count==numCourses else []
相关文章推荐
- JDBC:参数化SQL
- Ubuntu 14.04 安装TFTP server
- springmvc里面的URL注册方式
- MVC自带验证
- 利用NPOI控件导出Excel,并且弹出提示框供客户选择导出文件路径
- Android编程实现3D滑动旋转效果的方法
- 动态添加布局(个人觉得还算不错,查了很多资料,网上没有我要的,所以写出来)
- 什么是FEC/NACK
- PHP之math_pow
- Swift 基础入门 协议/闭包
- 关于struts文件上传遇到只有文件值没有接收到以及文件消失的解决方案
- Jackson 框架,轻易实现JAVA对象和JSON串互转
- org.hibernate.TransientObjectException:
- Anaconda快捷键
- Spinner的深入学习
- 黑马程序员-------C语言回顾-整型变量修饰符和一维数组
- 关于HTML代码的转义
- oracle 大表 迅速 导出(使用命令行)
- swift 快速奔跑的兔几 本节的内容是:闭包儿和操作队列
- java复习:其他常用类