说我有两个链接列表 6-> 14-> 45-> 38-> 52-> 18-> 90->和 78-> 38-> 44-> 6-> 85-> 52
这里,第二链表在节点52处首先连接,并且在列表中也存在元件38和6。什么是在这里获得这两个链接列表的交叉点的最佳方法节点与元素52.
答案 0 :(得分:1)
查找两个链接列表l1
和l2
的交集的一种直接/有效的方法是散列。您可以使用以下方法:
h
,其中键是节点'地址,该值是二进制/布尔值,表示该节点是否存在于h
。l1
并插入所有节点'地址为h
。l2
。对于每个节点,检查它是否存在于h
中。如果我们在h
中找到一个节点,则此节点与l1
和l2
相交。 此算法具有O(m + n)
时间复杂度和O(m)
h
的额外辅助空间,其中m
的大小为l1
,{{1} }是n
的大小。