当前位置: 首页 > 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;}
};

http://www.xdnf.cn/news/402409.html

相关文章:

  • 1. 使用 IntelliJ IDEA 创建 React 项目:创建 React 项目界面详解;配置 Yarn 为包管理器
  • VLM-RL:用于安全自动驾驶的统一视觉语言模型和强化学习框架——论文阅读
  • vue3搭建实战项目笔记四
  • 前端面试高频50个问题,解答
  • 【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载
  • 26 广西大学机械考研材料力学真题 材料力学考研复习笔记题库 机械考研材料力学择校推荐哪个院校?
  • MATLAB复制Excel数据到指定区域
  • lenis滑动插件的笔记
  • 【sqlmap需要掌握的参数】
  • Oracle 19c 静默安装
  • LeetCode[101]对称二叉树
  • 05_jdk8新特性
  • SpringAI框架中的RAG模块详解及应用示例
  • WebRTC:去中心化网络P2P框架解析
  • continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
  • 白帽SEO与黑帽SEO差异
  • 24.(vue3.x+vite)引入组件并动态挂载(mount)
  • 蓝桥杯13届 卡牌
  • Docker私有仓库实战:官方registry镜像实战应用
  • ZYNQ笔记(二十一): VDMA HDMI 彩条显示
  • 当生产了~/qt-arm/bin/qmake,可以单独编译其他-源码的某个模块,如下,编译/qtmultimedia
  • openwrt目录结构(部分)
  • 【开源工具】深度解析:基于PyQt6的Windows时间校时同步工具开发全攻略
  • ZYNQ处理器在发热后功耗增加的原因分析及解决方案
  • Vue3 Echarts 3D饼图(3D环形图)实现讲解附带源码
  • springCloud/Alibaba常用中间件之Setinel实现熔断降级
  • Python动态渲染页面抓取之Selenium使用指南
  • springboot-web基础
  • 单片机学习Day08--相邻流水灯
  • 主流编程语言中ORM工具全解析