LeetCode 课程表二(拓扑排序+Python)

使用桶排序算法中的kahn(卡恩)算法,也可以使用dfs。

这里使用卡恩算法,主要维护一个列表cnt,cnt【i】表示能到达节点i的边,比如说:a到c有一条边,b到c有一条边,那么cnt【c】= 2。当然,如果从a走到c一次,cnt【i】= 1。如果b再到cc一次,那么cnt【i】= 0。如果某个节点i,cnt【i】= 0,说明没有边能到达i节点,就是说i节点前面没有其他节点了,那么可以选择i节点。

class Solution:def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:ans = []# kahn 算法edge = defaultdict(list)cnt = [0]*numCoursesfor a, b in prerequisites:edge[b].append(a)cnt[a] += 1qu = deque()for i in range(numCourses):if cnt[i] == 0:qu.append(i)while qu:f = qu.popleft()ans.append(f)for nex in edge[f]:cnt[nex] -= 1if cnt[nex] == 0:qu.append(nex)return ans if len(ans) == numCourses else []

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/827012.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

信息流广告大行其是,微博回望“原生”的初心

摘要:有流量的地方,就当有原生信息流广告 信息流广告,自2006年Facebook推出后就迅速火遍全球数字营销界,被誉为实现了广告主、用户、媒体平台三赢。特别是随着OCPM/OCPX大放异彩,信息流广告几乎成为广告主的必选项&…

iText生成PDF文件

一、导语 常见生成PDF文件的有两种方法,一是先生成 word文档,然后将word转换成PDF文件;另一种则是直接生成PDF文件。 1.1.word转换PDF 1.1.1.技术介绍 生成Word文件并将其转换为PDF文件,可以使用多种Java库和JAR包。以下是一些…

Print Conductor 文档批量打印工具 v9.0.2312

网盘下载 Print Conductor 是 Windows 上一款功能强大的文档批量打印工具,通过该软件可以快速的帮用户批量处理打印PDF文件、协议、文档、图纸、演示文稿、文本文件等,完美的支持PDF、DOC、JPG、PNG、SNP、PSD、MSG、WRI、WPS、RTF、TXT、XLS、PPT、PPS、…

在Linux系统中,禁止有线以太网使用NTP服务器进行时间校准的几种方法

目录标题 方法 1:修改NTP配置以禁止所有同步方法 2:通过网络配置禁用NTP同步方法 3:禁用NTP服务 在Linux系统中,如果想要禁止有线以太网使用NTP服务器进行时间校准,可以通过以下几种方法之一来实现: 方法 …

Java中的对象

什么是类和对象 在Java中类是物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些类进行单独思考,最后才是对某分类下的细节进行单独思考 面向对象适合处理复杂问题适合处理需要多人协作的问题 在Java中面向…

【状态机dp 动态规划】100290. 使矩阵满足条件的最少操作次数

本文涉及知识点 动态规划汇总 状态机dp LeetCode100290. 使矩阵满足条件的最少操作次数 给你一个大小为 m x n 的二维矩形 grid 。每次 操作 中,你可以将 任一 格子的值修改为 任意 非负整数。完成所有操作后,你需要确保每个格子 grid[i][j] 的值满足…

【Qt 学习笔记】Qt常用控件 | 显示类控件 | Label的使用及说明

博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 显示类控件 | Label的使用及说明 文章编号:Q…

Opencv Python图像处理笔记一:图像、窗口基本操作

文章目录 前言一、输入输出1.1 图片读取显示保存1.2 视频读取保存1.3 文件读取保存 二、GUI2.1 窗口2.2 轨迹条2.3 画图2.4 鼠标回调 三、图像入门操作3.1 颜色空间转化3.2 通道分离合并3.3 添加边框3.4 算数操作 四、二值化4.1 普通4.2 自适应4.3 Otsu 参考 前言 随着人工智能…

mysql基础3——创建和修改数据表

创建数据表 创建一个表(importtype有默认值1)并插入一条数据(importtype字段没有指定值) 约束 默认约束(把设置的默认值自动赋值给字段) create table demo.importhead(listnum int,supplied int,stock…

C++进修——C++基础入门

初识C 书写HelloWorld #include <iostream> using namespace std;int main() {cout << "HelloWorldd" << endl;system("pause");return 0; }注释 作用&#xff1a;在代码中加一些说明和解释&#xff0c;方便自己或其他程序员阅读代码…

C# - 反射获取字段/属性/方法

using System; using System.Reflection;public class MyClass {public int MyField;public int MyProperty { get; set; }public void MyMethod() { } }class Program {static void Main(){Type type typeof(MyClass);// 获取字段FieldInfo fieldInfo type.GetField("M…

Python零基础从小白打怪升级中~~~~~~~Python正则表达式

Python正在表达式 一、re模块中三个函数 1、match函数 re.match 尝试从字符串的起始位置匹配一个模式&#xff0c;匹配成功则返回的是一个匹配对象&#xff08;这个对象包含了我们匹配的信息&#xff09;&#xff0c;如果不是起始位置匹配成功的话&#xff0c;match()返回的…

软设之CPU的组成

CPU是由运算器&#xff0c;控制器&#xff0c;寄存器组和内部总线组成。 运算器 算数逻辑单元ALU:数据的算术运算和逻辑运算 累加寄存器AC:通用寄存器&#xff0c;为算数逻辑单元提供一个工作区&#xff0c;用于暂存数据。 数据缓存寄存器DR:写内存时&#xff0c;暂存指令或…

docker打包部署自己的应用

docker部署应用 当谈及使用 Docker 进行容器化部署应用时&#xff0c;可以想象它是一个能够将整个应用程序及其所有依赖项打包成一个独立、可移植的容器的工具。这个容器不仅包含了应用代码&#xff0c;还包括了操作系统、运行时环境以及所有依赖的库和组件。这样一来&#xf…

双工结构(duplex construction)

参考文献&#xff1a; [BDPV11] Bertoni G, Daemen J, Peeters M, et al. Duplexing the sponge: single-pass authenticated encryption and other applications[C]//Selected Areas in Cryptography: 18th International Workshop, SAC 2011, Toronto, ON, Canada, August 1…

mybatis创建入门流程体验

mysql数据库中建表 drop table if exists tb_user;create table tb_user(id int primary key auto_increment,username varchar(20),password varchar(20),gender char(1),addr varchar(30) );INSERT INTO tb_user VALUES (1, zhangsan, 123, 男, 北京); INSERT INTO tb_user …

星域社区原版APP源码/社区交友App源码/动态圈子群聊php源码

简介 初始版本是由RuleAPP规则之树开发的&#xff0c;而星域社区则是在此基础上进行了二次开发和美化。作者花了近一年的时间来打磨它&#xff0c;现在即将推出Pro版。如果你只想免费使用的话&#xff0c;可以使用原始的RuleAPP版本。但是&#xff0c;如果你想要获得更好的美观…

算法学习系列(五十):最长上升子序列模型(二)

目录 引言一、最长上升子序列 II二、拦截导弹三、导弹防御系统 引言 本章内容讲的是最长上升子序列模型的第二种&#xff0c;基本模型还是以最长上升子序列的优化方法是一个思想&#xff0c;其实还是比较的难想的&#xff0c;并且其序列单调性还是要好好的注意一下&#xff0c…

【YOLOv9】实战二:手把手教你使用TensorRT实现YOLOv9实时目标检测(含源码)

‍‍&#x1f3e1;博客主页&#xff1a; virobotics(仪酷智能)&#xff1a;LabVIEW深度学习、人工智能博主 &#x1f384;所属专栏&#xff1a;『LabVIEW深度学习实战』 &#x1f4d1;上期文章&#xff1a;『【YOLOv9】实战一&#xff1a;在 Windows 上使用LabVIEW OpenVINO工具…

CTF工具处理(2)--HackBar报错

来源&#xff1a;HackBar插件绕许可_hackbar许可证-CSDN博客 报错页面&#xff1a; 工具报错原因&#xff1a; 版本升级&#xff0c;需要收费。 破解&#xff1a; 1.下载文件&#xff08;去网上找破解HackBar&#xff09; 2.添加附件&#xff1a; 3.重启&#xff1a; 按F12就…