当前位置: 首页 > news >正文

力扣210(拓扑排序)

210. 课程表 II - 力扣(LeetCode)

这是一道拓扑排序的模板题。简单来说,给出一个有向图,把这个有向图转成线性的排序就叫拓扑排序。如果有向图中有环就没有办法进行拓扑排序了。因此,拓扑排序也是图论中判断有向无环图的方法。

用bfs的拓扑排序思路如下:1.找到入度为0的节点,加入结果集;2.将该节点从图中移除

需要注意三点:1.移除不是真的移除,只不过是把与这个节点相连的节点的入度减一;2.如果一个节点与两个或以上个节点相连,那么在移除了这个节点之后就会有多个选择,因此拓扑排序的结果不唯一;3.如果结果集的元素个数不等于图中节点个数,那么就必定有环。

class Solution 
{
public:vector<int> findOrder(int numCourses, vector<vector<int>>& prerequisites) {int n=numCourses;vector<vector<int>>graph(n);//图vector<int>ans;//结果集vector<int>inDegree(n,0);//记录入度的数组for(auto&p:prerequisites)//构建图{graph[p[1]].push_back(p[0]);inDegree[p[0]]++;}queue<int>que;for(int i=0;i<n;i++)//将入度为0的节点加入队列{if(inDegree[i]==0){que.push(i);}}while(!que.empty()){int fro=que.front();que.pop();ans.push_back(fro);//加入结果集for(int x:graph[fro])//处理节点fro指向的节点{inDegree[x]--;if(inDegree[x]==0){que.push(x);}}}if(ans.size()!=n){return {};}return ans;}
};

相关文章:

  • VLM-RL:用于安全自动驾驶的统一视觉语言模型和强化学习框架——论文阅读
  • 互联网大厂Java求职面试:优惠券服务架构设计与AI增强实践-3
  • DVWA在线靶场-xss部分
  • DeepSeek-R1-Distill-Qwen-1.5B代表什么含义?
  • 26考研|数学分析:函数列与函数项级数
  • 对接马来西亚股票数据API接口文档
  • 如何使用Selenium?
  • Linux操作系统从入门到实战(六)Linux开发工具(上)详细介绍什么是软件包管理器,Linux下如何进行软件和软件包的安装、升级与卸载
  • 前端上传el-upload、原生input本地文件pdf格式(纯前端预览本地文件不走后端接口)
  • C++ 状态模式详解
  • React Native踩坑实录:解决NativeBase Radio组件在Android上的兼容性问题
  • 在Taro中开发一个跨端Svg组件,同时支持小程序、H5、React Native
  • 【PmHub后端篇】Skywalking:性能监控与分布式追踪的利器
  • 按指定位置或关键字批量删除工作表-Excel易用宝
  • 颠覆工业通讯:PROFINET转EtherCAT网关打造汇川变频器的数据传输革命
  • 可灵 AI:开启 AI 视频创作新时代
  • mysql配置输入错误密码3次后锁定60s
  • 告别卡顿,图片查看界的“速度与激情”
  • Jenkins:库博静态工具CI/CD 的卓越之选
  • idea中ctrl+/注释,总是出现在最前行
  • 智能手表眼镜等存泄密隐患,国安部提醒:严禁在涉密场所使用
  • 从这些电影与影像,看到包容开放的上海
  • 哈马斯表示已释放一名美以双重国籍被扣押人员
  • 英媒:英国首相住所起火,目前无人伤亡
  • 加强战略矿产出口全链条管控工作部署会召开
  • 澎湃思想周报|欧洲胜利日之思;教育监控与学生隐私权争议