leetcode210 课程表II_zg轩的博客-程序员秘密

技术标签: leetcode bfs  

题目:
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.

Example 1:

Input: 2, [[1,0]]
Output: [0,1]
Explanation: 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] .
Example 2:

Input: 4, [[1,0],[2,0],[3,1],[3,2]]
Output: [0,1,2,3] or [0,2,1,3]
Explanation: 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.
You may assume that there are no duplicate edges in the input prerequisites.
思路:逆拓扑排序
class Solution:
def findOrder(self, numCourses, prerequisites):
from collections import *
pre, suc = defaultdict(int), defaultdict(list)
for a, b in prerequisites:
pre[a] += 1
suc[b].append(a)
free = set(range(numCourses)) - set(pre)
out = []
while free:
a = free.pop()
out.append(a)
for b in suc[a]:
pre[b] -= 1
pre[b] or free.add(b)
return out * (len(out) == numCourses)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44482648/article/details/86710874

智能推荐

利用python登陆账号提交表单_python提交表单_狂奔的 蜗牛的博客-程序员秘密

利用python向动态网页中添加表单,自动处理批量信息

objective-c(五)-面向对象之初见_whybangbang的博客-程序员秘密

今天下午没什么事,不上班了,课程设计也不急,本来叫人去逛街的,但现在也不想动,算了,那就不去了,那就来为大家说说objective-c面向对象吧。我也是初步学objective-c,开这个博客,一方面是为我学习过程记录一下,以后需要回顾的时候好找,另外是想为像我这样已经有一些其他语言开发经验的人提供方便,让大家学起来更加容易,我计划等我把这块学完为这个开个专栏,名字就叫“不从零开始学objec

数据库巡检服务 Oracle 10g_zistxym的博客-程序员秘密

<br />prompt 数据库巡检服务 <br />prompt 说明:<br />prompt 用于检查Oracle 10g数据库各项指标(不支持DG备库运行)。<br />prompt 包括数据库主要参数、数据库主要对象情况、存储空间配置、数据库性能、RMAN备份情况等。<br />prompt 巡检脚本必须以sys用户执行。<br />prompt +---------------------------------------------------------------------------

对FCOS论文的一点理解_fcos算法创新点_苗老大的博客-程序员秘密

一、创新点1、anchor free,对每个feature map 上的每个像素点进行预测2、FPN 多尺度预测,预测不同尺度的目标框3、引入Center-ness 层,减少误检框二、网络输出1、分类分支特征图上的每个点(x,y) 通过下面的公式映射到input image上的接近中心的位置2、Center-ness 分支主要目的是为了减少误检框发现问题:部分误检框离真实框的中心点距离较大解决方法:将分类支路的输出乘以一个权重图得到最终的分类置信度,而这.

ajax获取返回值两种方式_yuhui66666688gfbfdy的博客-程序员秘密

===用data,这种是通用的===function queryHealthCount(){ $.ajax({ url:'${ctx}/flex!flexHealth.json', async:false, type:'POST', dataType : 'json', success:function(data){ healthCou

编写简单的连接MongoDB数据库C++程序 && 解决编译C++程序时链接MongoDB动态库失败的问题_WUJIAQIANHUI的博客-程序员秘密

不过重点在于如何让这个程序真正可以跑起来显示出来结果,着实费了一番功夫。 1 #include 2 #include "client/dbclient.h" 3 4 using namespace mongo; 5 using namespace std; 6 void run() { 7 DBClientConnection c; 8 c.conne

随便推点

html中引入调用另一个公用html模板文件的方法_minpad的博客-程序员秘密

一、需要借助 jquery div+$("#page1").load(“b.html”) 。参考代码:&lt;body&gt; &lt;div id="page1"&gt;&lt;/div&gt; &lt;div id="page2"&gt;&lt;/div&gt; &lt;script&gt; $("#page1").load("page/Page...

整理总结iOS 13适配遇到的问题_iOSTerry的博客-程序员秘密

1.UISearchController上的SearchBar显示异常,高度变为只有1px。 解决方法:解决办法是使用KVO监听frame值变化后设置去应该显示的高度。2.iOS13禁止使用valueForKey、setValue: forKey的方式获取和设置私有属性,会引起crash。 解决方法:使用其他方法替换。3.TabBar上设置的红点会偏移到左上方。遍历UITabB...

【Verilog-26】Net线路连接_Alfred.HOO的博客-程序员秘密

Net是结构描述中为线路连接(连线和接线)建立的模型。net的值是由net的驱动所决定的。驱动器可以是门、UDP、实例模块或者连续赋值语句的输出。语法:1.supply0和supply1类型的net变量分别具有逻辑值0和1,并可以为它定义驱动能力(supply strength);2.tri0和tri1类型的nets,当没有驱动时,分别具有逻辑值0和1,并可以为它定义驱动能力;3.如果net变量的扩展选项选用了关键词vectored,则不允许对它进行某位和某些位的选择,也不允许对它定义强度,PLI

自动化运维基础-ansible_weixin_34262482的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

PMBOK知识点整理【第七章项目成本管理】(49个子过程、输入、工具和技术、输出)_bingwoo.的博客-程序员秘密

PMBOK项目成本管理知识点整理(4个子过程、输入、工具和技术、输出)

安装scrapy报错ERROR: Failed building wheel for Twisted 百分百解决办法_三少灬的博客-程序员秘密

在pip安装Scrapy的时候,报错如下:需要我们自己下载Twisted,然后安装。这里有Python的各种依赖包。选择适合自己Python以及系统的Twisted版本。http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载好之后 cd到文件夹安装成功!准备安装scrapy安装成功!!...

推荐文章

热门文章

相关标签