博客
关于我
算法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/

你可能感兴趣的文章
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>
mysql8的安装与卸载
查看>>
MySQL8,体验不一样的安装方式!
查看>>
MySQL: Host '127.0.0.1' is not allowed to connect to this MySQL server
查看>>
Mysql: 对换(替换)两条记录的同一个字段值
查看>>
mysql:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘解决方法
查看>>
MYSQL:基础——3N范式的表结构设计
查看>>