题目描述(中等难度)

    给定一个开始单词和一个结束单词,一个单词列表,两个单词间转换原则是有且仅有一个字母不同。求出从开始单词转换到结束单词的最短路径长度是多少。

    思路分析

    基本上就是 的简化版了,可以先看一下 126 题 的解法思路。接下来就按照 126 题的思路讲了。把之前的图贴过来。

    要求最短的路径, 肯定在这里就不合适了。而在之前我们用 BFS 将每个节点的邻接节点求了出来,这个过程其实我们相当于已经把最短路径的长度求出来了。所以我们只需要把之前的 BFS 拿过来稍加修改即可。

    解法一 BFS

    中介绍了得到当前节点的相邻节点的两种方案,官方题解 中又提供了一种思路,虽然不容易想到,但蛮有意思,分享一下。

    就是把所有的单词归类,具体的例子会好理解一些。

    解法二 双向搜索

    在 最后一种解法中介绍了双向搜索,大大降低了时间复杂度。当然这里也可以直接用,同样是增加 变量即可,只不过之前用的递归,把 len 加到全局变量会更加方便些。

    当然,也可以不用递归,可以用两个队列就行了,直接把 这里 的代码贴过来供参考把,思想还是不变的。

    windliang wechat

    添加好友一起进步~

    如果觉得有帮助的话,可以点击 给一个 star 哦 ^^

    如果想系统的学习数据结构和算法,强烈推荐一个我之前学过的课程,可以点击 这里 查看详情