博客
关于我
算法C++ 面试常考拓扑排序理解 面试复习用(第四章)
阅读量:190 次
发布时间:2019-02-28

本文共 1193 字,大约阅读时间需要 3 分钟。

文章目录


造轮子博客链接


参考博文



闲聊

我对于一些我实在看不下去的东西 有的时候也忘记了 感觉不是很重要的话 我就会去网上搜索 这个东西面试会不会考察 发现要考察的时候 还是觉得要写一篇博客 来记录一下 因为毕竟我对于我不是很想看的东西的话 我的理解相对来说就没有那么好 写一篇总比没写好


拓扑排序的理解

图分为无向图和有向图 无向图与有向图的区别就是 无向图中的线段 仅代表连接上了两个点 但是有向图的线段却有方向

拓扑排序是有向图中的一种类型 是属于无环类型的有向图 如果是有环的话 我记得以前的一个例子 就是讲大学学科的优先级比例 就是拿的拓扑排序来的

如果是有环图的话 那么何从谈起 这一个点之前的项目都必须是要完成的 环都循环了 那哪里来的优先级呢


思路分析 代码如何输出拓扑序


理论功夫我确实感觉到部分吃力 毕竟我觉得 编程编程 吃的是码量嘛哈哈哈哈 但还是要多花点时间记一下这些理论东西

首先就是在处理有向图的时候我们是用什么图来处理

是用邻接表来处理呢 还是用邻接矩阵处理
其实我感觉都差不多 算法书上好像直接把邻接矩阵给pass掉了
但是我们不能否认的是 邻接矩阵在面对很稠密的数据输入的时候 确实也浪费不了多少空间 而且访问也是常数时间的

那就用邻接表嘛 在处理数据的时候我们需要留一个心眼

就是对于 出度和入度 我觉得我们是需要有所记录的
因为毕竟我们的拓扑序的输出顺序就是按照入度数来进行排序的

其实核心问题就是记录 入度数 在每当排出一个点时 我们需要把那个点指向的所有点的入度数减去一 我们的优先级就是把每一个入度数为0的弄出来 然后又会多出来几个入度数为0的 知道全部给pop出来了


拓扑排序有关的题目 实践出真知

相关力扣题目


相关知识点 拓扑排序的就是入度

把这道题写了 感觉很多东西也都开了 刚刚才被通知 下下周考高数
但现在一点没学 只能现在先预习起走了 下一周的编程可能要先放下了 把考试给应付一下

这里我还是想再写一下 不重复检测环的方式 因为发现自己这个地方理解有点薄弱

我们可以利用unorder_map<int,int> 来记录 或者是用一个栈

如果是用unorder_map<int,int>来记录访问的话 则是
一个节点为0 表示未访问过 节点为1 表示当前路线正在访问 节点为2表示已经访问过了 可以跳过 而用栈的话 其实也就记录了一个 正在访问的路线上的节点 如果有环则当前栈中必定有那个元素 并且我们可以拿一个vector<bool>来记录是否访问过 免得重复检测那些已经检测过的路线

针对拓扑排序的题 我们恰好在求拓扑序的时候 得到的结果是小于节点数的话 就说明有环 因为总存在一个时间点 所有的节点都有入度 而无法BFS

ok了 上面是对有环和 拓扑序的总结 如果之后忘记了可以反复回看一下思路 免得忘记


检测回环相关题目


转载地址:http://ccni.baihongyu.com/

你可能感兴趣的文章
NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现update数据实时同步_实际操作05---大数据之Nifi工作笔记0044
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_实现数据插入数据到目标数据库_实际操作03---大数据之Nifi工作笔记0042
查看>>
NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置数据路由_生成插入Sql语句_实际操作02---大数据之Nifi工作笔记0041
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_03_来吧用NIFI实现_数据分页获取功能---大数据之Nifi工作笔记0038
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_不带分页处理_01_QueryDatabaseTable获取数据_原0036---大数据之Nifi工作笔记0064
查看>>
NIFI从MySql中离线读取数据再导入到MySql中_无分页功能_02_转换数据_分割数据_提取JSON数据_替换拼接SQL_添加分页---大数据之Nifi工作笔记0037
查看>>
NIFI从Oracle11G同步数据到Mysql_亲测可用_解决数据重复_数据跟源表不一致的问题---大数据之Nifi工作笔记0065
查看>>
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
NIFI同步MySql数据源数据_到原始库hbase_同时对数据进行实时分析处理_同步到清洗库_实际操作06---大数据之Nifi工作笔记0046
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_实际操作---大数据之Nifi工作笔记0020
查看>>