LeetCode 210. 课程表 II

embedded/2024/9/25 11:57:53/

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.ppmy.cn/embedded/116605.html

相关文章

如何批量获取安卓设备上所有应用的桌面图标

文章目录 概述一、准备工作1.1 安装 ADB安装 ADB&#xff1a;1.2 获取设备上的应用包名1.3 使用 ADB 导出 APK 文件 二、提取桌面图标流程2.1 反编译 APK 文件2.2 解析 AndroidManifest.xml2.3 搜索图标资源文件 三、 编写 Python 自动化工具3.1 代码结构3.2 运行脚本 四、错误…

架构面试题

架构基础 如何理解架构的演进&#xff1f; 架构的演进指的是随着技术、业务和需求的不断发展&#xff0c;架构在设计和实施上的变化和进化过程。这包括从单体应用向微服务架构的过渡、从传统的服务器部署向云原生架构的转变&#xff0c;以及在数据处理、安全性和性能优化等方…

MyBatis 缓存机制

MyBatis 缓存机制详解 MyBatis 提供了一种内置的缓存机制&#xff0c;用来提高数据查询的效率。通过缓存&#xff0c;MyBatis 可以减少对数据库的访问&#xff0c;提升系统性能。MyBatis 缓存分为 一级缓存&#xff08;Local Cache&#xff09; 和 二级缓存&#xff08;Global…

基于单片机的精确电压表DA-AD转换

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机&#xff0c;采用DAC0832和ADC0832检测电压&#xff0c;0到8.5V&#xff0c;设计复位电路 LED管显示实际稳压值&#xff0c;初始电压0 二、硬件资源 基于KEIL5编写C代码&#xff0c…

Mac 命令行常用操作笔记

1. 启用和禁用 Wi-Fi 打开 Wi-Fi&#xff1a; sudo networksetup -setairportpower "Wi-Fi" on 关闭 Wi-Fi&#xff1a; sudo networksetup -setairportpower "Wi-Fi" off 2. 搜索并连接 Wi-Fi 切换到 airport 工具目录&#xff1a; cd /System/Librar…

PAT甲级-1083 List Grades

题目 题目大意 学生有姓名&#xff0c;编号和分数&#xff0c;给定分数区间&#xff0c;输出在这个区间内的人名和编号。输出顺序按照分数从高到低&#xff0c;没有重复的分数。 思路 非常简单的结构体排序题&#xff0c;定义一个结构体&#xff0c;按照题目条件sort就可以了…

从 Tesla 的 TTPoE 看资源和算法

特斯拉的 ttpoe 出来有一段时间了&#xff0c;不出所料网上一如既往的一堆 pr 文&#xff0c;大多转译自 演讲 ppt 和 Replacing TCP for Low Latency Applications&#xff0c;看了不下 20 篇中文介绍&#xff0c;基本都是上面这篇文章里的内容&#xff0c;车轱辘话颠来倒去。…

MATLAB智能优化算法-学习笔记(3)——大规模邻域搜索算法求解旅行商问题【过程+代码】

一、问题描述 旅行商问题(TSP, Traveling Salesman Problem)是组合优化中的经典问题之一。给定一组城市和每对城市之间的距离,要求找到一条最短的路径,使旅行商从某个城市出发,访问每个城市一次并最终回到出发点。TSP问题广泛应用于物流配送、工厂调度、芯片制造等领域。…