【力扣每日一题】2023.9.10 课程表Ⅱ
目录
题目:
示例:
分析:
代码:
题目:

示例:

分析:
今天的题目和昨天类似,不过今天要我们求出学习所有课程的先后顺序。
昨天只需要我们求出能否学习完所有课程,因此我们只需要判断构建出的有向图中是否有环即可,而今天的题我们就不能简单判断有没有环了。
要返回学习课程的先后顺序,最简单最直接的方法就是模拟。
我们跟昨天一样,首先先把有向图构建出,接着我们再模拟学习,模拟之前我们还需要拿一个数组来存放学习课程的顺序,以及一个set来记录学过的课程,其实数组和set里的元素是一致的,不过set更方便统计set中是否含有某个元素。
每次学习我们都把所有课程遍历一遍,如果课程我们没有学过(不在set里),我们就遍历这门课程的先修课程,如果它的先修课程全部都在set中,那么我们本轮学习就可以学这门课程,把它添加进答案数组以及set中。
课程遍历完毕之后,我们还需要做一个判断,如果本轮学习没有学习到任何课程,那么就表示我们无法学习到所有的课程(图中有环),返回空数组即可。
一直重复上述模拟学习的过程,直到答案数组的长度等于课程数目了,就表示我们学习完了所有的课程,这时退出循环,返回答案数组即可。

代码:
class Solution {
public:unordered_map<int,vector<int>>m;vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {for(auto& p:prerequisites){ //构建有向图 if(m.find(p[0])==m.end()) m[p[0]]=vector<int>(0);m[p[0]].push_back(p[1]);}vector<int>res; unordered_set<int>s; //用于统计已经学习的课程int last=0; //记录上一轮的学习课程数while(res.size()!=numCourses){for(int i=0;i<numCourses;i++){ //遍历所有课程 if(s.count(i)==0){ //如果没学过课程那么进入判断bool flag=true;for(int c:m[i]){ if(s.count(c)==0){flag=false;break;}}if(flag){ //如果本课程的所有先修课都学过,那么添加进答案res.push_back(i);s.insert(i);}}}//如果本轮学习过后,学习课程和上一轮一样,那么我们无法学完所有课程,返回空if(last==res.size()) return vector<int>(0);last=res.size();}return res;}
};
相关文章:
【力扣每日一题】2023.9.10 课程表Ⅱ
目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 今天的题目和昨天类似,不过今天要我们求出学习所有课程的先后顺序。 昨天只需要我们求出能否学习完所有课程,因此…...
VSCODE CMAKE C++ 工程调试, C++不以科学计数法输出并控制小数位数
1. VSCODE调试CMAKE工程配置1.1 修改CMakeLists.txt文件1.2. 程序中1.3. launch.json配置1.4 开始调试1.5 注意 2. C设置输出浮点数且保留位数固定 1. VSCODE调试CMAKE工程配置 1.1 修改CMakeLists.txt文件 加这一句 set(CMAKE_BUILD_TYPE "Debug")1.2. 程序中 在…...
Drools规则引擎入门学习记录
业务开发过程中,对于某些判断性的通用规则是基于if-else封装,还是基于策略模式封装?无论以上那种封装出来的方法,只能在单体软件包中共用,且不能无感部署,然而对于业务而言,可能规则改变的比较频…...
肖sir__设计测试用例方法之判定表06_(黑盒测试)
设计测试用例方法之判定表 1、判定表:是一种表达逻辑判断的工具。 2、判定表:包含四部分 1)条件桩(condition stub):列出问题的 所有条件(通常条件次序无关紧要)。 2)条件项&#x…...
<图像处理> 空间滤波基础
空间滤波基础 图像滤波是一种常见的图像处理技术,用于平滑图像、去除噪音和边缘检测等任务。图像滤波的基本原理是在进行卷积操作时,通过把每个像素的值替换为该像素及其邻域的设定的函数值来修改图像。 预备知识:可分离滤波核、边缘填充。…...
如何在Django中使用django-crontab启动定时任务、关闭任务以及关闭指定任务
安装django-crontab包: pip install django-crontab 在Django项目的settings.py文件中,找到INSTALLED_APPS配置,并添加django_crontab到列表中: INSTALLED_APPS [ ... django_crontab,... ] 在settings.py文件的末尾,添加以下配置以设…...
mysql配置项整理
二、:mysql服务器参数 general 基础配置 datadir/var/lib/mysql #数据文件存放的目录 socket/var/lib/mysql/mysql.sock #mysql.socket表示server和client在同一台服务器,并且使用localhost进行连接,就会使用socket进行连接 pid_file/v…...
【KRouter】一个简单且轻量级的Kotlin Routing框架
【KRouter】一个简单且轻量级的Kotlin Routing框架 KRouter(Kotlin-Router)是一个简单而轻量级的Kotlin路由框架。 具体来说,KRouter是一个通过URI来发现接口实现类的框架。它的使用方式如下: val homeScreen KRouter.route&l…...
时间管理类书籍阅读笔记
背景 这段时间看了时间管理方面的书籍,大部分和早晨时间利用相关。之所以有了利用早晨时间的想法,是某天下班后,感觉很疲惫,什么都不想做,于是就打了一晚上游戏,然后第二天重复着这样的生活。 突然意识到…...
CSS文字居中对齐学习
CSS使用text-align属性设置文字对齐方式;text-align:center,这样就设置了文字居中对齐; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>css 水平居中</title><style>.box …...
《论文阅读》CARE:通过条件图生成的共情回复因果关系推理 EMNLP 2022
《论文阅读》CARE:通过条件图生成的移情反应因果关系推理 前言简介基础知识TransformerVariational Graph Auto-Encoder 变分图自编码器`邻接矩阵(adjacency matrix)``图神经网络(GNN)``图卷积神经网络(GCN)``自编码器(Auto Encoder)``图自编码器(GAE)``变分图自编码…...
React 开发一个移动端项目(1)
技术栈: 项目搭建:React 官方脚手架 create-react-appreact hooks状态管理:redux 、 redux-thunkUI 组件库:antd-mobileajax请求库:axios路由:react-router-dom 以及 historyCSS 预编译器:sass…...
c#查看代码的执行耗时( Stopwatch )
我们如果需要看某段代码的执行耗时,会通过如下的方式进行查看 using System.Diagnostics; private void button1_Click(object sender, EventArgs e){Stopwatch sw Stopwatch.StartNew();//sw.Start();StringBuilder sb new StringBuilder();for(int i 0; i <…...
Python网络爬虫库:轻松提取网页数据的利器
网络爬虫是一种自动化程序,它可以通过访问网页并提取所需的数据。Python是一种流行的编程语言,拥有许多强大的网络爬虫库。在本文中,我们将介绍几个常用的Python网络爬虫库以及它们的使用。 Requests库 Requests是一个简单而优雅的HTTP库&…...
YOLOv5算法改进(15)— 更换Neck之AFPN
前言:Hello大家好,我是小哥谈。在YOLOv5中添加AFPN(Adaptive Feature Pyramid Network)可以提高目标检测的准确性。AFPN是一种用于目标检测任务的功能增强模块,它能够自适应地融合来自不同层级的特征图,以提…...
Vue2项目练手——通用后台管理项目第七节
Vue2项目练手——通用后台管理项目 用户管理分页使用的组件Users.vuemock.js 关键字搜索区Users.vue 权限管理登录页面样式修改Login.vue 登录权限使用token对用户鉴,使用cookie对当前信息保存(类似localstorage)Login.vuerouter/index.js 登…...
《Web安全基础》04. 文件操作安全
web 1:文件操作安全2:文件上传漏洞2.1:简介2.2:防护与绕过2.3:WAF 绕过2.3.1:数据溢出2.3.2:符号变异2.3.3:数据截断2.3.4:重复数据 3:文件包含漏洞4…...
docker-compose安装nginx
基于docker-compose安装nginx 目录 一、目录结构 1、docker-compose.yml 2、nginx.conf 3、default.conf 4、index.html 二、访问测试 一、目录结构 1、docker-compose.yml version: 3 services:nginx:image: registry.cn-hangzhou.aliyuncs.com/zhengqing/nginx:1.21.1…...
报错处理:MySQL无法启动
报错环境: Linux MySQL 具体报错: Cant connect to local MySQL server through socket /var/run/mysqld/mysqld.sock 排错思路: 当尝试启动MySQL服务时,如果出现无法连接到MySQL服务的错误,可能是由于MySQL服务未正确…...
Vue中表单手机号验证与手机号归属地查询
下面是一篇关于Vue中如何进行表单手机号验证与手机号归属地查询的Markdown格式的文章,包含代码示例。 Vue中表单手机号验证与手机号归属地查询 手机号验证和归属地查询是许多Web应用程序中常见的功能之一。在Vue.js中,我们可以轻松地实现这两个功能。本…...
3大创新突破:FlashPatch如何让Flash内容重获新生
3大创新突破:FlashPatch如何让Flash内容重获新生 【免费下载链接】FlashPatch FlashPatch! Play Adobe Flash Player games in the browser after January 12th, 2021. 项目地址: https://gitcode.com/gh_mirrors/fl/FlashPatch 如何解决2021年后Flash内容无…...
MAAAssistantArknights:智能自动化的明日方舟游戏助手解决方案
MAAAssistantArknights:智能自动化的明日方舟游戏助手解决方案 【免费下载链接】MaaAssistantArknights 一款明日方舟游戏小助手 项目地址: https://gitcode.com/GitHub_Trending/ma/MaaAssistantArknights 价值解析:如何通过三大核心技术解决玩家…...
NaViL-9B效果展示:电商主图自动提取卖点文案+竞品对比分析
NaViL-9B效果展示:电商主图自动提取卖点文案竞品对比分析 1. 多模态大模型惊艳登场 想象一下,当你上传一张商品图片,AI不仅能准确识别图片内容,还能自动生成吸引人的卖点文案——这就是NaViL-9B带来的革命性体验。作为原生多模态…...
Llama-3.2V-11B-cot部署详解:自动修复视觉权重加载致命Bug全过程
Llama-3.2V-11B-cot部署详解:自动修复视觉权重加载致命Bug全过程 1. 项目概述 Llama-3.2V-11B-cot是基于Meta Llama-3.2V-11B-cot多模态大模型开发的高性能视觉推理工具,专为双卡RTX 4090环境深度优化。本工具通过自动修复视觉权重加载等核心Bug&#…...
5分钟掌握Axure RP多版本语言包管理:从部署到定制全流程
5分钟掌握Axure RP多版本语言包管理:从部署到定制全流程 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包,不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...
告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约
告别‘unbox’失败:Truffle项目初始化保姆级教程,从MetaCoin到自定义合约 当你第一次接触Truffle框架时,那种兴奋感可能很快就会被truffle unbox metacoin命令失败的红字提示浇灭。别担心,这几乎是每个区块链开发者的必经之路。本…...
Path of Building完全指南:精准规划角色构筑3步法+高效配置策略
Path of Building完全指南:精准规划角色构筑3步法高效配置策略 【免费下载链接】PathOfBuilding Offline build planner for Path of Exile. 项目地址: https://gitcode.com/gh_mirrors/pat/PathOfBuilding Path of Building是一款强大的离线工具,…...
QQ机器人开发零基础入门:LuckyLilliaBot插件完全指南
QQ机器人开发零基础入门:LuckyLilliaBot插件完全指南 【免费下载链接】LuckyLilliaBot NTQQ的OneBot API插件 项目地址: https://gitcode.com/gh_mirrors/li/LuckyLilliaBot 在即时通讯机器人开发领域,如何快速实现QQ平台的自动化交互?…...
实战指南:深入Terraria源码的5个核心模块与架构解析
实战指南:深入Terraria源码的5个核心模块与架构解析 【免费下载链接】Terraria-Source-Code 项目地址: https://gitcode.com/gh_mirrors/te/Terraria-Source-Code 你是否曾好奇一款2D沙盒游戏如何实现复杂的物理系统、网络同步和游戏逻辑?Terrar…...
如何快速掌握Framer.js:现代原型设计框架的核心模块解析
如何快速掌握Framer.js:现代原型设计框架的核心模块解析 【免费下载链接】Framer Framer - Design Everything 项目地址: https://gitcode.com/gh_mirrors/fr/Framer Framer.js是一款功能强大的现代原型设计框架,它允许设计师和开发者创建高保真的…...
