【发布时间】:2014-10-02 16:18:54
【问题描述】:
我已经通过这个link 接受了 答案描述了下面的算法来找到合并节点
1) 遍历两个链表找到M和N。
2) 回到头部,然后遍历 |M - N|更长的节点 列表。
3) 现在步入锁定步骤并比较节点,直到找到 常见的。
我不确定它是否总是有效?敌人示例:- 列表 1 有 10 个节点,列表 2 有 3 个节点,其中第一个节点正在合并节点(所以形状字母“V”倒置)。现在如果我经过上面 算法,
1)M=10,N=3
2)M-N 将是 7
3)我选择列表 1 并遍历前 7 个节点。现在我开始比较每个 节点从 list1 中的第 8 个节点开始,包含第二个的所有节点 列表。
现在我永远不会捕获合并节点(这是这里的第一个节点)。我是否在我的不理解中遗漏了什么,或者这个算法有一些缺陷?
【问题讨论】:
-
“M-N 将是 3”。不应该是7吗?无论如何,如果第一个节点是合并节点,这是否意味着列表完全相同?
-
这与 java 或 C 有什么关系,而不是完全与语言无关?
-
@Kevin 我已经更正了。但我的问题还是一样。
-
@scott 更正了这一点
-
第8个节点是这里的正确答案,你只需要将它与第二个列表中的第1个节点进行比较。把它画在一张纸上。
标签: algorithm