LeetCode力扣第433题--《最小基因变化》题解---DFS+回溯

DFS起点为end,终点为start,从end回溯至start。

对于end,

  • 若end为无效基因序列,则直接返回-1;
  • 若end为有效基因序列,则进行DFS:存在路径(将会更新ans值)则返回ans,不存在路径(未更新ans值)则返回-1。

DFS算法思路:

        对于当前遍历基因序列结点end,遍历bank数组,寻找尚未加入到路径(即未访问)并且变换一次可到达的基因序列s(即可进行DFS的下一结点),将s加入到路径(即设为访问),路径数加一(即count+1),再进行DFS,对结点s进行完DFS遍历后,将结点移出路径(即从在vis中删除)。

DFS的结束存在两种情况:

  •         一是start==end,这种情况为start在bank基因库中,并存在start到end的路径,那么我们只需判断当前路径数是否为变化次数最少路径 ,若是,则更新最少变化次数。
  •         二是isValid(start,end)为真,即当前遍历结点下一步即可到达start,这种情况为无论start是否在bank基因库中,都存在start到end的路径,那么我们只需
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值