Word Ladder/ Word Ladder II

Word Ladder I 和 II 是LeetCode中的相关题目,主要探讨如何找到字典中两个词之间的最短变换路径。通过建立词的可达图,并利用BFS寻找最短路径。针对词长度固定的特点,优化判断词在字典中的算法,使用哈希方法降低时间复杂度至O(n)。在完成Word Ladder后,Word Ladder II只需记录最短路径上的前驱节点,使用DFS恢复路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >




题目分析

1. Word Ladder和Word Ladder II两题是连续的,基本是同一个问题的两个难度,因此放在一起做了。

2. Word Ladder是要找出一条从Start Word 到 End Word的最短路径,一个比较简单的想法就是建立一张图,描述每个在字典中的词之间的可达性,只有任意两个词间有且仅有一个字母不同的时候是直接可达的,然后用BFS的方式去找到Start Word和End Word之间的最短路径。但是这个做法的问题在于每一次从某一个点扩展新路径的过程都是O(n)的复杂度,而如果词的数量非常多的话,这个做法性能就会很低,最坏的复杂度是O(n^2)的级别。

3. 考虑到字典中给出的所有词的长度都是一样长的条件,可以尝试考虑通过置换每个字母再判断置换后的词是否在字典中来扩展新的节点。如果将每个词的长度看做常量,使用线性扫描的方式来判断词在不在字典内的话这个算法最坏也是O(n^2)的复杂度,而且常数因子应该要比上一个算法的大。

4. 但是判断词在不在字典内的算法可以替换成哈希的方法,如果把这个部分的复杂度视作线性的话这个算法就降到了O(n)的复杂度,但带有一个比较大的常数因子。

5. 于是采用BFS的方式,再加上上面所提到的扩展方式进行求解,可以通过这题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值