1 | 给定字典中的两个词,长度相等。写一个方法,把一个词转换成另一个词, 但是一次只能改变一个字符。每一步得到的新词都必须能在字典中找到。 |
这是单词接龙的题目,依旧超时,不过注释掉vis回溯,就可以通过
因为如果某个节点不可达最终节点,那么该节点在以后也不可达,所以应将其去掉
1 | class Solution { |
方法一:广度优先搜索+优化建图
利用map维护一个链表,每个链表中对应当前元素的转移状态
1 | class Solution { |
方法二:双向广度优先搜索
如果使用两个同时进行的广搜可以有效地减少搜索空间。一边从 beginWord 开始,另一边从 endWord 开始。我们每次从两边各扩展一层节点,当发现某一时刻两边都访问过同一顶点时就停止搜索。这就是双向广度优先搜索,它可以可观地减少搜索空间大小,从而提高代码运行效率。
1 | class Solution { |
参考文献
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/word-ladder/solution/dan-ci-jie-long-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。