210. Course Schedule II【M】【7】
2016-05-26 13:41
337 查看
There are a total of n courses you have to take, labeled from
Some courses may have prerequisites, for example to take course 0 you have to first take course 1, which is expressed as a pair:
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:
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
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
Another correct ordering is
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.
Subscribe to see which companies asked this question
直接用拓扑排序就行了。不过有个问题是,他给的pair是反的。。。
0to
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.
Subscribe to see which companies asked this question
直接用拓扑排序就行了。不过有个问题是,他给的pair是反的。。。
class Solution(object): def findOrder(self, numCourses, prerequisites): n = numCourses p = prerequisites v = [0] * n dic = {} indegree = [0] * n res = [] for i in p: dic[i[1]] = dic.get(i[1],[]) + [i[0]] indegree[i[0]] += 1 q = [] for i in xrange(len(indegree)): if indegree[i] == 0: q += i, #print indegree,q while q != []: node = q.pop() res += node, for i,j in p: if j == node: indegree[i] -= 1 if indegree[i] == 0: q += i, #print res,indegree if sum(indegree) == 0: return res return []
相关文章推荐
- CSS3实践之路(六):CSS3的过渡效果(transition)与动画(animation)
- 树
- webservice:(1)新手搭建调用webservice那些坑
- 安卓面试重难点
- xilinx mig ddr3 --- mig_top
- c++ string 用法
- Android采用Ant批量打包
- Caffe学习(1):Ubuntu16.04上Caffe配置安装(Only CPU)
- cocos+window10+android studio/eclipse 安卓开发环境搭建
- android开发之自定义toast
- bitmap
- cf 671B Robin Hood
- hibernate4导致的Ajax请求死在那里
- R语言学习
- leetcode 343. Integer Break
- 哈希理论
- stm32数据存储
- 不要拘泥于固定的思维方式
- MongoDB使用小结:一些常用操作分享
- 为什么Qt编程出现No signal?