图:207课程表 题解:入度数组,邻接表,队列,拓扑排序

news/2024/9/19 1:49:28/文章来源:https://www.cnblogs.com/spp20/p/18415597

207. 课程表 - 力扣(LeetCode)

没做出来,参考题解,这篇题解写的非常好。

把一个 有向无环图 转成 线性的排序 就叫 拓扑排序。(没太懂这句话的意思)

class Solution {
public:bool canFinish(int numCourses, vector<vector<int>>& prerequisites) {vector<int> inDegree(numCourses, 0);//入度数组unordered_map<int, vector<int>> map; //邻接表//初始化入度数组和邻接表for(const auto& pre : prerequisites){inDegree[pre[0]]++; //计算每个课程的入度map[pre[1]].push_back(pre[0]); //建立邻接表}queue<int> q;//将所有入度为0的课程加入队列for(int i = 0; i < numCourses; i++){if(inDegree[0] == 0){q.push(i);}}int count = 0;//选课计数//开始拓扑排序while(!q.empty()){int selected = q.front(); //选出当前的课q.pop();count++;//选课数+1//获取依赖这门课的后续课程if(map.find(selected) != map.end()){for(int nextCourse : map[selected]){inDegree[nextCourse]--; //减少后续课程的入度if(inDegree[nextCourse] == 0){q.push(nextCourse); //如果入度为0,则加入队列}}}}return count == numCourses; //如果选完的课数等于总课数,返回true}
};

 

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

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

相关文章

AI老照片修复神器,Anole下载介绍

最近AI老照片修复上色,再一次火出圈,一些社交平台关于此话题内容流量满满,尤其是在小红书和抖音火的不得了,本期文章就来给大家分享下AI修复老照片的方式方法 本文主要介绍使用Anole修复老照片的方法,只需输入一张黑白或彩色照片,即可得到修复后的彩色结果,让往日的老照…

肖健飞的第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 进行自我评估,熟悉博客园的使用方法,阐述自己的课程期望姓名-学号 肖健飞-2022329301124一、自我介绍 (一)基本情况及爱好 我叫肖健飞,来自江苏泰州,是信息科学与工程学院22级自动化(2)班…

2024ICPC网络赛第一场题解(部分)

2024ICPC网络赛第一场题解和参考代码以及部分思路说明这一场基本纯挂件,给队友翻译翻译题面,帮队友打打板子了,可惜最后40sL题冲了一个 \(O(\frac{n^3}{w})\) 的bitset最后wa了,所以下面的题解我也只能看着队友代码说说大概,主要参考一下代码吧。 A 题意 给出32个队伍的能…

sign与unsigned的原理、数据存储与硬件的关系

目录关键字unsigned和signed数据在计算机中的存储原码 与 补码的转化与硬件关系原,反,补的原理:整型存储的本质变量存取的过程类型目前的作用十进制与二进制快速转换大小端字节序判断当前机器的字节序"负零"(-128)的理解截断建议在无符号类型的数值后带上u, 关键字un…

C++中对象的延迟构造

本文并不讨论“延迟初始化”或者是“懒加载的单例”那样的东西,本文要讨论的是分配某一类型所需的空间后不对类型进行构造(即对象的lifetime没有开始),更通俗点说,就是跳过对象的构造函数执行。 使用场景 我们知道,不管是定义某个类型的对象还是用operator new申请内存,…

黑客失误?76.2万车主,家庭住址信息泄露

​据Cybernews研究团队发现,一个包含76.2W名车主及其车辆详细信息的敏感数据库已经在网上泄露。这些数据托管在一个美国的IP地址上,首次发现是在8月4日,至少暴露了48小时。据该团队称,泄露的数据揭示了车主的敏感信息。泄露的细节几乎揭示了拥有车辆的个人的所有信息,包括…

C++ 在 Visual Studio 如何将指针星号设置成靠近变量而不是类型

“工具”->“选项”->“文本编辑器”->“C/C++”->“代码样式”->“格式设置”->“间距”->“指针/引用对齐方式”->“右对齐”。

Git冲突解决技巧

在多人协作的软件开发项目中,Git 冲突是不可避免的现象。当两个或更多的开发者同时修改了同一段代码,并且尝试将这些修改合并到一起时,冲突就发生了。解决这些冲突是确保代码库健康和项目顺利进行的关键。在多人协作的软件开发项目中,Git 冲突是不可避免的现象。当两个或更…

AI写作助手哪些好用?6款强大的AI写作助手值得收藏!

在内容创作日益重要的今天,AI写作助手已经成为许多创作者的得力工具。它们不仅能够提高写作效率,还能在一定程度上保证文章质量。面对市场上琳琅满目的AI写作助手,如何选择一款好用且适合自己的工具呢?以下推荐6款强大的AI写作助手,它们各具优势,助力创作者轻松应对各种写…

1928.规定时间内到达终点的最小话费,题解

1928. 规定时间内到达终点的最小花费 - 力扣(LeetCode) 有点难,参考官方题解代码: 利用了动态规划思想,逐步计算从起点到各个城市在不同时间下的最小费用。 1.代码解释,涉及,static关键字,constexpr关键字,INT_MAX除以2赋值的含义static constexpr int INFTY = INT_MA…

软件技术基础的第一次作业

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zjlg/rjjc这个作业的目标 向教师和助教介绍自己,并熟悉博客园 对课程的期望姓名 颜宇航学号 20223293011251.个人介绍 大家好,我是22自动化2班的颜宇航,来自浙江台州。很高兴能够在这里与大家分享自己的生活!我是一个…