课程表(拓补排序)

news/2025/1/11 19:13:22/文章来源:https://www.cnblogs.com/benscode/p/18666106

题目链接:https://leetcode.cn/problems/course-schedule-ii/description/

题意:

给定n门课程,规定只有学完某一个课程才能继续学下一门课程,让你输出学习顺序。如果成环,则返回空数组

思路:

拓补排序,入度删除法
需要提前准备一个indegree数组用来统计每个节点的入度大小
用数组模拟双端队列,先把入度为0的点压入队列,再将这个点的影响消除(即把邻接表中该点的to删除,同时对应到indegree中),如果indegree因此出现为0的点则再次压入,直到压完
如果压入的个数刚好等于节点个数,说明不是环图。

class Solution {
public:vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {vector<int>gra[2005];vector<int>indegree(numCourses);for(int i=0;i<prerequisites.size();i++){int from=prerequisites[i][1];int to=prerequisites[i][0];indegree[to]++;gra[from].emplace_back(to);}vector<int> qu;int l=0,r=0;for(int i=0;i<numCourses;i++){if(indegree[i]==0){qu.emplace_back(i);r++;}}int cnt=0;while(l<r){int cur=qu[l++];cnt++;for(int next:gra[cur]){if(--indegree[next]==0){qu.emplace_back(next);r++;}}}vector<int>em;return cnt==numCourses? qu:em;}
};

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

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

相关文章

1.11鲜花

感觉这两天停课有点不太对劲…… 本身因为 csp-s 打烂了赛季报销之后就没有什么事了的,车人却还要以 T/P 营赛前要拉进度的理由把我们喊过来停课。 说实话本身还是想停课的,但停了了一天就发现 T 和 P 都去不了,最后车人拉进度又拉的奇快无比(例如放一个一上午的题单有一堆…

电商行业人才加速跑:实战导向型企业员工培训速成策略

随着电商行业的迅猛发展,市场竞争日益激烈,企业对员工的培训需求也愈发迫切。如何在快节奏的市场环境中,快速提升员工的专业技能和服务水平,成为电商企业面临的重大课题。本文将为您介绍一套企业员工培训的速成法,旨在帮助电商企业在竞争中保持领先地位和在培训资源整合中…

教育机构知识管理新纪元:构建高效知识中台实战策略

在当今这个信息爆炸的时代,教育机构面临着前所未有的挑战与机遇。如何高效地整合、管理和传播知识,成为了决定教育机构竞争力的关键因素之一。知识中台作为连接前台业务与后台资源的桥梁,正逐渐成为众多教育机构转型升级的重要抓手。本文将为您提供一份详尽的知识中台搭建指…

23. 对话框控件

一、对话框应用对话框窗口是一个用来完成简单任务或者和用户进行临时交互的顶层窗口,通常用于输入信息、确认信息或者提示信息。QDialog 类是所有对话框窗口类的基类。按照运行时是否可以和其他窗口进行交互操作,对话框分为模式(或模态)对话框和非模式对话框。对于带有模式…

全栈开发之小程序 网快速笔记,复习springboot 假期复习一套课程

第六章登陆与注册 本章主要内容如下登陆注册相关<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper n…

施耐德 三菱 西门子PLC 以太网口S7-1200/1500系列通讯协议解析说明文档

资料参考链接: https://item.taobao.com/item.htm?abbucket=1&id=766532329733&ns=1&pisk=g0VseN0PDhxsC5j0KlbEVm4PVjhjhw5yfEgYrrdwkfhtDJaucc7cIfyIckEIXC7GIxnbjfH0QmoZcja0VwSPa_zgSjcR4g5yCEod7bAxWqKqv23rGVC1T97TSjcA4eRAU_ag2s7Opd3xJwgqlFnYDAhpvVoKWd…

使用html2canvas生成图片时遇到文字重叠问题

在使用html2canvas.js插件生成图片时,如果文字中有特殊符合时,生成的图片会出现文字重叠的问题,例如这样。 后面发现是换行时英文特殊标点占位与文字占位不同导致该问题。解决方法:为特殊字符添加【letter-spacing: 1px;】css。 如果把全部文字都加letter-spacing: 1px;会…

BurpSuite之SQL 注入测试实操

1、安装:CO2插件进入【BurpSuite】---【拓展】---【BApp商店】,安装完成后,[已安装]列会有:√ 拦截后发送到【重放器】: 重发器中【请求】中操作:【拓展】---【CO2】---【发送到SQLMapper】 2、SQL注入 (1)操作登录 (2)进行拦截,发送给【重放器】: (3)修改name的…

《痞子衡嵌入式半月刊》 第 116 期

痞子衡嵌入式半月刊: 第 116 期这里分享嵌入式领域有用有趣的项目/工具以及一些热点新闻,农历年分二十四节气,希望在每个交节之日准时发布一期。 本期刊是开源项目(GitHub: JayHeng/pzh-mcu-bi-weekly),欢迎提交 issue,投稿或推荐你知道的嵌入式那些事儿。 上期回顾 :《…

【DNS攻防】深入探讨DNS数据包注入与DNS中毒攻击检测 (C/C++代码实现)

DNS数据包注入和DNS中毒攻击是网络安全领域中的两个重要主题。DNS(域名系统)是互联网中的一项核心服务,负责将域名转换为与之相对应的IP地址。 DNS数据包注入是指攻击者通过篡改或伪造DNS请求或响应数据包来干扰或破坏DNS服务的过程。攻击者可通过注入恶意数据包来改变DNS解…

代码随想录算法训练营第4天 | 24. 两两交换链表中的节点,19.删除链表的倒数第N个节点,面试题 02.07. 链表相交,142.环形链表II,链表总结篇

一、刷题部分 1.1 24. 两两交换链表中的节点原文链接:代码随想录 题目链接:24. 两两交换链表中的节点 - 力扣(LeetCode)1.1.1 题目描述 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交…

windows7老爷机安装蓝牙适配器遇到的坑

连续买了3个蓝牙接收器,都无法在我的win7电脑上使用,最后询问小二、加上自己上网查询,最终解决。 首先,安装蓝牙驱动,重启电脑。 然后,说明书上说,右下角的系统托盘理应有个蓝牙图标,但是我这里不显示,所以,要另寻它法。 右键点击网络图标,【打开网络和共享中心】看…