【发布时间】:2011-01-14 01:43:24
【问题描述】:
假设有两个单链表,它们都在某个点相交并成为单链表。
两个链表的头或开始指针都是已知的,但相交的节点是未知的。此外,每个列表中的节点在它们相交之前的数量是未知的,并且两个列表可能不同,即 List1 在到达交叉点之前可能有 n 个节点,而 List2 在到达交叉点之前可能有 m 个节点,其中 m 和 n 可能是
- m = n,
- m
- m > n
一个已知或简单的解决方案是将第一个列表中的每个节点指针与第二个列表中的每个其他节点指针进行比较,通过匹配的节点指针将我们引导到相交节点。但是,这种情况下的时间复杂度将是 O(n2),这会很高。
找到相交节点的最有效方法是什么?
【问题讨论】:
-
另见Production code for finding junction in a linked list。它不是重复的,但它扩展了此处询问的问题。
标签: c algorithm linked-list