leetcode中3个面试常考的图的算法

leetcode中图的算法

克鲁斯卡尔算法(无向图)

用于最小生成树的计算: n个点 找到n-1个边 边的权重和最小
思路:
1:计算每两个点之间的距离 并且按照从小到大的顺序排序
2:然后通过并查集的方法 依次寻找不可替代的边
3:一直到找到边的个数为n-1 即找到了最小生成树
[https://leetcode-cn.com/problems/min-cost-to-connect-all-points/]

迪杰斯特拉算法(有向图)

用于计算单源点到某一点的最短路径问题,无负权边
思路:
1:构建领接矩阵 目前的结点到下一个结点信息的数组(因为存在一对多)
2:每次寻找,当前未访问过的点中 距离源点最近的点 并且把该店标记为访问过
3:并更新与其相邻点的距离。
4:直到找到需要寻找的点
leetcode743

拓扑排序

是专门应用于有向图的算法,其附带效果可以检测有向图是否有环
思路:
1:构建邻接表,记录入度数组
2:将入度为0的放入队列中去
3:依次遍历队列 并且更新入度数组 将入度数组为0加入队列 直到队列为空
4:入队的顺序 即为拓扑排序 拓扑排序的结果不唯一 如果出现环 则入队的个数小于节点个数
leetcode210

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值