Leetcode 210 Course Schedule II
2015-06-12 09:28
411 查看
here 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
同 207 Course Schedule
每次取出点的时候放入数组最后输出。
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].
同 207 Course Schedule
每次取出点的时候放入数组最后输出。
require 'set' def can_finish(num_courses, prerequisites) graph, neighbour = Hash.new{|hsh,key| hsh[key] = Set.new}, Hash.new{|hsh,key| hsh[key] = Set.new} prerequisites.each do |x,y| graph[x] << y neighbour[y] << x end zero_degree, count = [], 0 ans =[] num_courses.times {|x| zero_degree << x if graph[x].empty?} while not zero_degree.empty? node = zero_degree.pop ans << node count += 1 neighbour[node].each do |x| graph[x] -= [node] zero_degree << x if graph[x].empty? end end return ans if count == num_courses [] end
相关文章推荐
- C#控制图像旋转和翻转的方法
- 怎么用OneKey Ghost安装系统 onekey ghost安装win7详细图文步骤
- 【JavaScript 6—基础知识点】:正则表达式(应用)
- android studio的问题整理(如何删除模块(Module))
- 【JavaScript 6—基础知识点】:正则表达式(应用)
- Android动画
- axis2 WebService的发布与调用
- sgu222
- sgu222 分类: sgu 2015-06-12 09:27 24人阅读 评论(0) 收藏
- 处理Excel,填充空白区域
- OAuth 2.0
- 译文:理解Java中的弱引用
- POJ2104 K-th Number(划分树和主席树代码)
- 关于Android Studio加载第三方jar包无法编译的问题解决。
- 23种设计模式
- Java中线程休眠编程实例
- 在51CTO学院做讲师的感想:边界
- JavaScript中setUTCMilliseconds()方法的使用详解
- auto property synthesis will not synthesize proterty ;it will be implementedby its superclass, use @
- 给学妹改程序