BFS算法之最短路问题

一、最短路问题介绍与解法

只要每一次变化都只变化一个数据,就是最短路问题。

与单源BFS不同,最短路问题是要找到最少的变化次数来达到变化之后的结果,此时如果像单源BFS一样一次只出一个队头元素显然是不合理的。我们要一次出一层元素,上一次有多少个“变化一次”的数据入队,就要把他们全部出队,这样才是一次出一层。

二、理解“变化一次”

以 基因的最小变化 为例

我们读题找到一个关键词叫做“一次基因变化”,所以就符合变化一次。

所以这道题的思路就是把每一次出队的字符串在他以前的变化基础上再变化一次,若直接得到结果就返回,否则把变化后的基因与基因库中的基因比较,有就加入队列,所以当队为空,但是还未返回结果就说明基因库中没有结果,返回-1

. - 力扣(LeetCode)

细节

(1)一定要特判两个点:若基因库中一开始就没有最后的结果就要返回-1,若一开始和最后的基因一样就要返回0。因为我们设置的返回结果从0开始,一开始一定入队就会+1,最后不特判一定不会返回-1和0

(2)一定不要忘记判断是否遍历过相同基因,不然会死循环。

三、例题

. - 力扣(LeetCode)

. - 力扣(LeetCode)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值