Jay*_*Jay 26 c algorithm linked-list
假设有两个单链表,它们在某个点相交并成为单个链表.
两个列表的头部或起始指针都是已知的,但交叉节点是未知的.此外,列表中每个列表中的节点数量在它们相交之前是未知的,并且两个列表可能具有不同,即List1在到达交叉点之前可能有n个节点,并且List2可能在到达交点之前有m个节点,其中m和n可以是
一种已知或简单的解决方案是将第一列表中的每个节点指针与第二列表中的每个其他节点指针进行比较,匹配节点指针将通过该指针引导我们到交叉节点.但是,在这种情况下,时间复杂度将是O(n 2),这将是很高的.
找到交叉节点的最有效方法是什么?
ken*_*ytm 47
这需要O(M + N)时间和O(1)空间,其中M和N是链表的总长度.如果公共部分很长(即M,N >> m,n)可能效率低下
编辑:请参阅http://richardhartersworld.com/cri/2008/linkedlist.html