题目描述(中等难度)
给定一个开始单词和一个结束单词,一个单词列表,两个单词间转换原则是有且仅有一个字母不同。求出从开始单词转换到结束单词的最短路径长度是多少。
思路分析
基本上就是 的简化版了,可以先看一下 126 题 的解法思路。接下来就按照 126 题的思路讲了。把之前的图贴过来。
要求最短的路径, 肯定在这里就不合适了。而在之前我们用 BFS
将每个节点的邻接节点求了出来,这个过程其实我们相当于已经把最短路径的长度求出来了。所以我们只需要把之前的 BFS
拿过来稍加修改即可。
解法一 BFS
中介绍了得到当前节点的相邻节点的两种方案,官方题解 中又提供了一种思路,虽然不容易想到,但蛮有意思,分享一下。
就是把所有的单词归类,具体的例子会好理解一些。
解法二 双向搜索
在 最后一种解法中介绍了双向搜索,大大降低了时间复杂度。当然这里也可以直接用,同样是增加 变量即可,只不过之前用的递归,把 len
加到全局变量会更加方便些。
当然,也可以不用递归,可以用两个队列就行了,直接把 这里 的代码贴过来供参考把,思想还是不变的。
总
添加好友一起进步~
如果觉得有帮助的话,可以点击 给一个 star 哦 ^^
如果想系统的学习数据结构和算法,强烈推荐一个我之前学过的课程,可以点击 这里 查看详情