LeetCode 210. 课程表 II

LeetCode 210. 课程表 II

现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] = [ai, bi] ,表示在选修课程 ai 前 必须 先选修 bi 。
例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示:[0,1] 。
返回你为了学完所有课程所安排的学习顺序。可能会有多个正确的顺序,你只要返回 任意一种 就可以了。如果不可能完成所有课程,返回 一个空数组 。
示例 1:
输入:numCourses = 2, prerequisites = [[1,0]]
输出:[0,1]
解释:总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为 [0,1] 。
示例 2:
输入:numCourses = 4, prerequisites = [[1,0],[2,0],[3,1],[3,2]]
输出:[0,2,1,3]
解释:总共有 4 门课程。要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。
因此,一个正确的课程顺序是 [0,1,2,3] 。另一个正确的排序是 [0,2,1,3] 。
示例 3:
输入:numCourses = 1, prerequisites = []
输出:[0]
提示:
1 <= numCourses <= 2000
0 <= prerequisites.length <= numCourses * (numCourses - 1)
prerequisites[i].length == 2
0 <= ai, bi < numCourses
ai != bi
所有[ai, bi] 互不相同

拓扑排序,并记录一种排序顺序

class Solution:def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -> List[int]:res = []not_studied = set([i for i in range(numCourses)])while not_studied:new_not_studied = set()for i in range(len(prerequisites)):x, y = prerequisites[i]if x is not None:new_not_studied.add(x)new_studied = not_studied - new_not_studiedfor i in new_studied:res.append(i)if not new_studied:breakfor i in range(len(prerequisites)):x, y = prerequisites[i]if y in new_studied:prerequisites[i] = [None, None]not_studied = new_not_studiedreturn [] if not_studied else res

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

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

相关文章

YUM降级基本用法

YUM降级基本用法 当包没有任何依赖关系时,降级是非常简单的。 YUM降级(没有依赖) yum downgrade package例: 复制代码 YUM降级(有依赖) 对于具有依赖关系的包,YUM降级更加困难。YUM降级不会自动解决依赖关系,因此必须手动完成。 YUM降级包和依赖关系 yum downgrad…

基于SpringBoot+Vue+MySQL的美食点餐管理系统

系统展示 用户前台界面 管理员后台界面 系统背景 在数字化快速发展的今天&#xff0c;餐饮行业也迎来了转型升级的重要机遇。传统餐饮管理方式面临效率低下、顾客体验不佳等问题。为此&#xff0c;开发一款基于SpringBootVueMySQL架构的美食点餐管理系统显得尤为重要。该系统旨…

问:JAVA中唤醒阻塞的线程有哪些?

在Java中&#xff0c;唤醒阻塞线程的方法有多种&#xff0c;以下是常见的线程唤醒方法。 唤醒方法 使用notify()和notifyAll()方法 synchronized (obj) {obj.notify(); // 唤醒单个等待线程// obj.notifyAll(); // 唤醒所有等待线程 }使用interrupt()方法 Thread thread n…

在 expressjs 中MySQL 的datetime类型,怎么插入数据

在Express.js中&#xff0c;当你需要与MySQL数据库交互并插入DATETIME类型的数据时&#xff0c;你通常会使用某种Node.js的MySQL客户端库&#xff0c;如mysql、mysql2或mysql2/promise&#xff08;后者提供了Promise API的支持&#xff0c;使得你可以使用async/await&#xff0…

在MySQL中,要查询所有用户及其权限,您可以使用以下命令:

文章目录 1、查询所有用户1.1、登录数据库1.2、select user,host from mysql.user; 2、查看用户的权限 1、查询所有用户 1.1、登录数据库 [rootlocalhost ~]# docker exec -it spzx-mysql /bin/bash rootab66508d9441:/# mysql -uroot -p123456 mysql: [Warning] Using a pas…

网络层协议——IP

目录 IP层 IP报文格式 IP的理解 运营商 分片与组装 IP层 传输层的TCP或者UDP协议能直接将数据发送到网络中吗&#xff1f;显然不能&#xff0c;封装完的TCP报文还是需要向下交付&#xff0c;经过协议栈&#xff0c;从链路层发送到物理层也就是网路中。 那么tcp做了什么工…

awk 切割字符串 shell linux

awk 切割字符串 shell linux linux shell之awk https://blog.csdn.net/iflink/article/details/122388805 echo "shanghai001 123456 ifconfig-push 192.168.1.1 192.168.1.22" | awk {print $1} shanghai001 echo "shanghai001 123456 ifconfi…

HTML5好看的水果蔬菜在线商城网站源码系列模板2

文章目录 1.设计来源1.1 主界面1.2 商品列表界面1.3 商品详情界面1.4 其他界面效果 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/142059220 HTML5好看的水果蔬菜在线商城…

全面详尽的 PHP 环境搭建教程

目录 目录 PHP 环境搭建概述 在 Windows 上搭建 PHP 环境 使用集成环境 XAMPP 安装步骤 配置和测试 常用配置 手动安装 Apache、PHP 和 MySQL 安装 Apache 安装 PHP 安装 MySQL 配置 PHP 连接 MySQL 在 Linux 上搭建 PHP 环境 使用 LAMP 方案 安装 Apache 安装 …

软件设计-开闭原则

开闭原则是一种重要的设计思想&#xff0c;它为软件系统的可扩展性和可维护性提供了有力的支持。 一、开闭原则的原理 开闭原则&#xff08;Open-Closed Principle, OCP&#xff09;是指软件实体&#xff08;类、模块、函数等&#xff09;应当对扩展开放&#xff0c;对修改关…

网络安全科普系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;知识分类管理&#xff0c;科普知识管理&#xff0c;案例分析管理&#xff0c;建议反馈&#xff0c;试题内容管理&#xff0c;交流论坛&#xff0c;系统管理 微信端账号功能包括&a…

基于DAMODEL——Faster-RCNN 训练与测试指南

Faster-RCNN 训练与测试指南 前言 今天我们要来实现一个经典的目标检测模型&#xff1a;Faster-Rcnn。我们使用DAMODEL云平台来实现&#xff0c;这是个很强大的云端平台&#xff0c;功能众多&#xff0c;你可以投你所好去进行你想做的事情。 1. 环境与工具准备 1.1 远程连接…

docker搭建个人网盘,支持多种格式,还能画图,一键部署

1&#xff09;效果 2&#xff09;步骤 2.1&#xff09;docker安装 docker脚本 bash <(curl -sSL https://cdn.jsdelivr.net/gh/SuperManito/LinuxMirrorsmain/DockerInstallation.sh)docker-compose脚本 curl -L "https://github.com/docker/compose/releases/late…

①无需编程 独立通道 Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器

Modbus主站EtherNet/IP转ModbusRTU/ASCII工业EIP网关串口服务器https://item.taobao.com/item.htm?ftt&id743840591638 EtherNet/IP 串口网关 EtherNet/IP 转 RS485 型号 2路总线EIP网关 MS-A1-2021 4路总线EIP网关 MS-A1-2041 4路总线EIP网关&#xff08;双网口&am…

轻量型js聊天框架Botui(附示例源码)

最近在捣鼓typecho博客&#xff0c;无意中发现一个好玩的小插件botui&#xff0c;可以实现简单的自定义聊天对话&#xff0c;因此通过"抽丝剥茧“提取出来一个简单的示例代码&#xff0c;就是一些js&#xff0c;css之类的。非常适合移植作为博客插件。 1.Botui介绍 官方文…

记录linux环境下搭建本地MQTT服务器实现mqtt的ssl加密通讯

1、ubuntu安装mosquitto sudo apt-get update//安装服务端 sudo apt-get install mosquitto//安装客户端 sudo apt-get install mosquitto-clients 2、安装openssl 3、mqtts/tls加密传输 mosquitto原生支持了TLS加密&#xff0c;TLS&#xff08;传输层安全&#xff09;是SSL&…

模拟哈希表

#include<iostream> #include<cstring>using namespace std; const int N100010; int h[N],e[N],ne[N]; int idx0;void insert(int x) {int t(x%NN)%N;//模拟链表插入e[idx]x,ne[idx]h[t],h[t]idx; }bool find(int x) {int t(x%NN)%N;th[t];while(t!-1)if(e[t]x)re…

翻译:openmax文档

设计哲学 如前所述&#xff0c;OpenMAX IL API 的核心重点是媒体组件的可移植性。现有设备和媒体实现解决方案的多样性要求 OpenMAX IL 将媒体软件栈的更高层次作为关键初始用户。对于许多操作系统而言&#xff0c;这意味着现有的媒体框架或某种形式的多媒体中间件。 另一个关…

【深度学习】(6)--图像数据增强

文章目录 图像数据增强一、作用二、增强方法三、代码体现四、增强体现 总结 图像数据增强 数据增强&#xff08;Data Augmentation&#xff09;&#xff0c;也称为数据增广&#xff0c;是一种在机器学习和深度学习中常用的技术&#xff0c;它通过对现有数据进行各种变换和处理…

怎么录制游戏视频?精选5款游戏录屏软件

对于热爱游戏的你来说&#xff0c;记录游戏中的精彩瞬间并分享给朋友或粉丝&#xff0c;无疑是一种享受。然而&#xff0c;在众多录屏软件中&#xff0c;如何选择最适合你的那一款&#xff1f;今天&#xff0c;我们就为大家精选了五款游戏录屏软件&#xff0c;需要的朋友快来选…