BFS解决拓扑排序

一、解题思路

1、建图

一般建立邻接表和入度统计表

(1)邻接表

当用数字表示点时可以用 vector<vector<int>> 

当不是用数字表示点时可以用 unordered_map<char / string...., vector<char / string....>>

在实际问题中如果需要对应关系唯一就要用 unordered_map<..., unordered_set<...>>

(2)入度统计表

当用数字表示点时可以用 vector<int> 

当不是用数字表示点时可以用 unordered_map<char / string...., int>

2、找到入度为0点入队

3、删点和与点相邻的边

4、重复2,3直到图中无点或无入度为0的点

二、例题

. - 力扣(LeetCode)

当队列为空但是还有点入度不为0就说明是有环图,不成立。

. - 力扣(LeetCode)

细节

(1)当s2是s1的真子串,是一定错误的,因为两者是子串,前者长度还大于后者是不符合题意的

(2)每一次加入边的时候对应关系的两个点都不能重复

(3)初始化入度哈希表时要把点全都置0

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值