假设总共有n个路线,这些路线从0到n-1标记。某些课程可能具有先决条件,鉴于课程总数和先决条件对列表,我们必须找到完成所有课程应采取的课程顺序。可能有多个正确的订单,我们只需要找到其中一个即可。如果不可能完成所有课程,则返回一个空数组。

因此,如果输入为2 [[[1,0]],则结果将为[0,1]。一共有2门课程。要选择课程1,我们应该已经完成课程0。因此正确的课程顺序是[0,1]

为了解决这个问题,我们将遵循以下步骤-在main方法中,将需要numCourses和先决条件:这将类似于-

定义一个名为in_degree的数组,并填充所有节点的所有度数,以及图的adj:=邻接表

定义一个称为访问的数组,并用0填充,其大小与numCourses相同

定义一个空堆栈。

对于0到numCourses范围内的i返回一个空列表

如果将访问堆栈传递到其中,则Visited [i]为假,而节点i的dfs为假,则

以相反的顺序返回堆栈元素。

示例

让我们看下面的实现以更好地理解-class Solution(object):

def findOrder(self, numCourses, prerequisites):

in_degree,adj=self.create_adj(numCourses,prerequisites)

visited = [0 for i in range(numCourses)]

stack = []

for i in range(numCourses):

if not visited[i] and not self.dfs(i,visited,stack,adj):

return []

return stack[::-1]

def create_adj(self,n,graph):

adj = {}

in_degree= [0 for i in range(n)]

for i in graph:

in_degree[i[0]]+=1

if i[1] in adj:

adj[i[1]].append(i[0])

else:

adj[i[1]] = [i[0]]

return in_degree,adj

def dfs(self, node, visited,stack,adj):

if visited[node] == -1:

return False

if visited[node] == 1:

return True

visited[node] = -1

if node in adj:

for i in adj[node]:

if not self.dfs(i,visited,stack,adj):

return False

visited[node]=1

stack.append(node)

return True

ob = Solution()print(ob.findOrder(2, [[1,0]]))

输入项2

[[1,0]]

输出结果[0,1]

python自己做课程表_Python课程表II相关推荐

  1. python如何做考勤_python基础教程:face++与python实现人脸识别签到(考勤)功能

    @本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 这篇文章主要为大家详细介绍了face++与python实现人脸识别签到(考勤)功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一 ...

  2. python如何做脚本_Python实现自动挂机脚本(基础篇)

    不知不觉肝阴阳师也快一年了,对这游戏真是又爱又恨,最近刚刚发布了PC版,突然很想尝试着写个脚本挂机,话不多说进入正题. 简单的鼠标操作 游戏挂机脚本,无非就是自动移动鼠标,自动点击,进行重复操作,所以 ...

  3. python怎么做图像处理_Python其实也可以做一些简单的图像处理,Python自动生成表情包...

    描述 作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!! 表情包不仅仅是一种符号,更是一种文化,是促进 ...

  4. python函数做菜单_PYTHON图形化操作界面的编程七__创建菜单

    PYTHON图形化操作界面的编程七__创建菜单 十八.创建菜单 1.水平菜单的创建 创建菜单需要多条语句,所以这里通过实例来说明水平菜单的创建方法: 下面的语句可以在窗口中添加水平菜单,其中前四行语句 ...

  5. python如何做接口测试_python实现接口测试

    url= "https://mail.163.com/" action= "post" > < case id= "idInputLine ...

  6. python列表做参数_Python ::将列表作为参数传递

    pyen中的响应,一个用于音乐数据的瘦库,以这种方式返回字典: {u'id': u'AR6SPRZ1187FB4958B', u'name': u'Wilco'} 我正在循环并打印艺术家: respo ...

  7. python数组做参数_python函数传递数组参数吗

    函数是任何一门编程语言都不可缺少的,而且也是非常重要的一部分.Python中函数的参数,可以分为以下几类: 位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数 ...

  8. python怎么做图表_python 制作表格

    制作表格 循环提示用户输入:用户名.密码.邮箱(要求用户输入的长度不超过20个字符,如果超过则只有前20个字符有效) 如果用户输入q或Q表示不再继续输入,将用户输入的内容以表格形式打印from pre ...

  9. python数组做参数_python完成数组格式的请求参数的加密计算

    #输入 '''order_id:31489 join_course[0][join_tel]:13130999882 join_course[0][join_name]:任学雨 join_course ...

最新文章

  1. 使用OpenCV实现车道线检测
  2. mysql z中文乱码_c#写入Mysql中文显示乱码 解决方法 z
  3. Linux文本三剑客之sed仗剑走天涯
  4. Linux下常用 60个命令
  5. 如何用Python批量修改文件名?
  6. k8s的网络优化(metallb)
  7. 双非院校非科班的学弟,刚刚拿到了腾讯、网易、美团等大厂Offer
  8. 中国移动将于11月1日公布5G套餐价格,北京地区已建5000个5G基站
  9. [转]EntityFramework Core技术线路(EF7已经更名为EF Core,并于2016年6月底发布)
  10. 人工智能导论(专家系统)
  11. driver接管当前浏览器
  12. QuickEdit-手机端强大的代码编辑器
  13. Jetbrains好用的插件(经验总结)
  14. excel合并两列内容_Excel中如何跳过空单元格进行粘贴
  15. Python批量删除文件名中带小括号数字(1)(2)(3)...
  16. 简单爬取猫眼实时票房数据
  17. vue element-ui之分页组件的封装
  18. 第十六章 - 垃圾回收相关概念
  19. Python3.4如何读写Excel
  20. java使用aspose-cad将CAD的dwg文件转换png等格式

热门文章

  1. java毕业设计我爱短视频管理系统mybatis+源码+调试部署+系统+数据库+lw
  2. 10种最流行的国外博客程序
  3. PYGAME - Event 事件
  4. 倍控3865U软路由安装网络行为管控插件Fros
  5. 马士兵 java 学习笔记_马士兵java教程笔记1
  6. 健康生活 - 四季蔬菜参考
  7. Wannfly挑战赛20 A 染色
  8. Linux Shell学习笔记:exit退出状态代码
  9. 从人力资源管理的角度看孙悟空大闹天宫
  10. everything changes so quietly