207. 课程表

article/2025/6/29 21:20:16

       

        我们需要判断是否能完成所有指定课程的学习,其中numCourses表示课程总数,prerequisites表示先修关系(例如[0,1]表示学习课程0前需先完成课程1)。

        能完成课程学习的情况: 当课程的先修关系可以形成有效的拓扑排序时,例如[0,1],[1,2],[2,3],学习顺序必须为3→2→1→0,这样就能顺利完成所有课程。

        无法完成课程学习的情况: 当课程间存在循环依赖关系时,例如[0,1],[1,2],[2,0],会导致无法确定学习顺序(学习0需要1,1需要2,而2又需要0),形成死锁状态。

我们可以用有向图来直观表示这两种情况。

                             

                            

       

        通过分析可以发现,当有向图中存在环时,说明课程之间存在循环依赖关系,此时无法完成所有课程的学习。因此,我们需要判断有向图中是否存在环:若有环则返回false,无环则返回true。

算法步骤如下:

  1. 构建图结构:将prerequisites数组中的每个元素p[1]添加到p[0]的邻接表中

  2. 搜索过程:对所有未被标记的节点进行深度优先搜索

  3. DFS实现逻辑:

    • 检查当前路径是否存在环(即当前路径是否已包含正在搜索的节点)
    • 标记当前节点并将其加入当前路径
    • 递归搜索该节点的所有邻接节点,若发现环则立即返回true
    • 完成搜索后进行回溯,将该节点从当前路径中移除
class Solution {
public:bool dfs(int i,vector<int>& vis,vector<int>& recStack,vector<vector<int>>& g) {if (recStack[i]) return true;if (vis[i]) return false;recStack[i] = 1;vis[i] = 1;for (auto it:g[i]) {if (dfs(it,vis,recStack,g)) {return true;}}recStack[i] = 0;return false;}bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {vector<vector<int>> g(numCourses);for (auto &p:prerequisites) {g[p[1]].push_back(p[0]);}vector<int> vis(numCourses,0);vector<int> recStack(numCourses,0);for (int i = 0;i < numCourses;i++) {if (!vis[i]) {if (dfs(i,vis,recStack,g)){return false;}}}return true;}
};

       

时间复杂度:O(n + m),其中n为课程数numCourses,m为邻接表长度,每个节点仅遍历一次

空间复杂度:O(n + m),邻接表g需要存储n+m个元素


http://www.hkcw.cn/article/mfmvcHhFOD.shtml

相关文章

vue3 ElMessage提示语换行渲染

在 ElMessage.error 中使用换行符 \n 并不会实现换行&#xff0c;因为 ElMessage 默认会将字符串中的换行符忽略。要实现换行显示&#xff0c;可以使用 HTML 标签 <br> 并结合 ElMessage 的 dangerouslyUseHTMLString 选项。以下是实现换行提示的代码示例&#xff1a; i…

使用lombok使用自动生成构造方法进行依赖注入

RequiredArgsConstructor 通过下面的方式 首先声明类注解 RequiredArgsConstructor在使用service时通过final进行注入即可 RequiredArgsConstructor 让你在不写构造函数的情况下&#xff0c; 通过 final 字段声明依赖关系&#xff0c;并由 Lombok 自动生成构造函数&#xff…

LangChain第二页_【教程】翻译完了

LangChain第二页_【教程】翻译完了 LangChain第二页教程内容比较简短&#xff0c;用了一天的时间就翻译完成了&#xff0c;但是里面的内容比较丰富&#xff0c;介绍的都是LangChain的入门基础技术。链接地址&#xff1a;教程对于AI应用&#xff0c;RAG是一个比较热门的方向&am…

基于STM32_HAL库的DMA应用

基于STM32_HAL库的DMA应用 文章目录 基于STM32_HAL库的DMA应用一、DMA介绍1.1 DMA的核心作用1.2 DMA数据传输方向1. 外设到内存&#xff08;Peripheral-to-Memory&#xff09;2. 内存到外设&#xff08;Memory-to-Peripheral&#xff09;3. 内存到内存&#xff08;Memory-to-Me…

阿富汗已有357人死于麻疹 疫苗缺乏与营养不足加剧疫情

世界卫生组织报告显示,截至5月25日,阿富汗今年已记录了超过55000例麻疹疑似病例,其中已有357人死亡,死者大部分是儿童。当地医务系统专家指出,疫苗缺乏和营养不足是疾病快速传播的重要原因。目前阿富汗有1580万人面临饥饿问题,大量儿童营养不良,难以抵御疾病侵袭,需要获…

中国汽车工业协会发布公平竞争倡议 反对无序“价格战”

近年来,我国新能源汽车产业快速发展,新能源汽车新车销售占比已经超过40%。行业整体运行呈现稳中向好态势,市场活力持续释放。然而,一段时间以来,行业盈利水平下降,无序“价格战”成为主要表现形式的“内卷式”竞争,严重影响企业正常经营,冲击产业链供应链安全,把产业发…

乖猫记账 2.2.1 | 完全免费 AI聊天记账~自动记账

乖猫记账是一款完全免费的小清新风格记账软件&#xff0c;适用于安卓、iPhone 和 iPad。它不仅颜值高&#xff0c;而且功能完善&#xff0c;整体记账体验出色。该应用支持AI聊天记账和语音智能识别&#xff0c;用户可以通过文字聊天对话或语音输入进行记账操作。语音识别特别准…

Nat. Commun|结合视觉基础模型与大语言模型,直接从病理图像生成病理报告

小罗碎碎念 这篇文章聚焦于医学AI领域的前沿研究&#xff0c;提出了一种名为HistoGPT的视觉语言模型&#xff0c;旨在解决传统组织病理学报告生成耗时、标准化不足的问题。 模型通过结合视觉基础模型&#xff08;如CTransPath和UNI&#xff09;与大型语言模型&#xff08;BioGP…

中方为何派国防大学代表团参加香会 阐释理念增信释疑

5月29日下午,国防部举行例行记者会。国防部新闻发言人张晓刚大校宣布,从5月29日至6月2日,中国人民解放军国防大学代表团将应邀前往新加坡参加第22届香格里拉对话会,并访问新加坡的军事和相关机构。在记者会上,有记者询问为何此次中方没有派遣更高层级官员出席香格里拉对话…

马斯克回应眼角淤青 儿子的“杰作”

据法新社等媒体报道,美国总统特朗普和美国企业家、政府效率部负责人马斯克于5月30日在白宫举行新闻发布会。当天是马斯克在政府任职的最后一天,他的眼角淤青引起了媒体关注。马斯克解释说,这是他五岁的儿子小X打的。当时他在和儿子闹着玩,让儿子打他的脸,结果真的被打了一…

世界首富回去探索太空了 美国政府的黑洞怎么办

var chan_v_w = 960,chan_v_h = 540,chan_v_p = https://mts-audio.huawangzhixun.com/image/20250531/news/61f786aa-351b-4360-b93b-d1a53824c148.jpg,chan_v_s = https://vmts.china.com/api/video/onaliyun/query?id=3101100&ttype=mp4;当地时间5月30日埃隆马斯克卸任…

老外最近流行带着空箱子来中国 网友:箱子也可以在中国买! “中国购”成新趋势

“一定要带空箱子去中国!”这一实用建议近期在海外社交平台引起广泛关注。从“中国游”到“中国购”,外国人来华购物成为新的跨境旅游趋势。支付平台数据显示,外国游客在中国消费时,本土商超、潮流文创和特色美食等的占比显著提升。“中国购”走红的原因是多方面的。退税政…

MySQL 8.0 OCP 英文题库解析(十)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题81~90 试题81:…

增长放缓的理想能否靠纯电突围 纯电转型成关键

近日,理想汽车L系列的焕新发布会上给新能源市场带来一场不小的震撼。L系列全系车型进行升级,在辅助驾驶、智慧座舱以及底盘性能等方面都有大提升,但价格上没有变动。理想此次加量不加价的原因在于L系列的销量已经疲软,而纯电动车的能力还没有释放出来,保量成为理想汽车的首…

12周岁未成年人故意杀人 检方追诉 彰显法律公正与权威

湖北省人民检察院在5月30日举办的“携手关爱 共护未来”检察开放日活动上透露,一起12周岁未成年人故意杀人案已报请最高检核准追诉,目前案件正在法院依法审理中。湖北检察机关执行宽严相济的刑事政策,针对情节较轻、社会危害性较小的犯罪行为,特别是初犯和偶犯,采取从宽处…

特朗普为何指责中国违反关税协议 称曾试图拯救中方经济

5月30日,美国总统特朗普表示,中国完全违反了贸易协议。他称签署这项协议是为了在美国加征高额关税后拯救中方经济免于崩溃。特朗普在社交平台“真实社交”上写道,中国当时处于严重的经济困境中,美国实施的关税实际上使其失去了与美国这个世界最大市场开展贸易的能力。据他介…

尊界S800是华为真正从0到1的产品吗 向超豪华市场冲击

尊界S800向超豪华汽车市场发起冲击。5月30日,华为联合安徽江淮汽车集团股份有限公司发布尊界S800。这款车定位为超豪华D级行政轿车,售价70.8万至101.8万元,是华为智选车体系下售价最高的产品。去年11月该车首次亮相,今年2月华为方面介绍了数项新车技术。华为常务董事、终端…

一票难求的“苏超”联赛:江苏人用热爱和幽默,把足球玩成了全民狂欢 球迷热情高涨引发关注

最近,江苏省城市足球联赛受到广泛关注。江苏人用热爱和幽默将足球变成了一场全民狂欢。有球迷表示“苏超”联赛一票难求,希望主办方能增加门票供应。6月1日,2025年江苏省城市足球联赛第3轮南京队对阵无锡队的比赛将在南京五台山体育场举行。球迷孟先生想去现场支持自己喜欢的…

不管多忙 端午别忘“做三事”“吃四物” 养生正当时

每年一到端午,家家户户粽叶飘香,门前也插起了艾草。这个节气不仅是民俗节日,更是养生的重要时刻。端午过后,阳气大盛,湿邪容易趁虚而入。这几天是调整体质、打通阳脉的关键期。除了吃粽子外,端午养生还可以通过“做三事”和“吃四物”来实现。将艾草挂在门外不仅能驱蚊虫…

哪里有封锁哪里就有突围 科技创新持续升级

中国驻美大使谢锋在华盛顿的一次活动中谈及中国的科技创新历程时提到,面对封锁和挑战,中国总能找到突围之路。5月28日,中国驻美国大使馆举办了一场“我的中国相册——我的中国足迹”影片首映会暨现代化的中国体验活动。谢锋在致辞中表示,中国的科技创新经历了重重困难,但通…