找到具有重复项的两个链表的交集

时间:2017-11-29 06:20:39

标签: optimization data-structures linked-list singly-linked-list

说我有两个链接列表  6-> 14-> 45-> 38-> 52-> 18-> 90->和  78-> 38-> 44-> 6-> 85-> 52

这里,第二链表在节点52处首先连接,并且在列表中也存在元件38和6。什么是在这里获得这两个链接列表的交叉点的最佳方法节点与元素52.

1 个答案:

答案 0 :(得分:1)

查找两个链接列表l1l2的交集的一种直接/有效的方法是散列。您可以使用以下方法:

  1. 创建一个空哈希表h,其中键是节点'地址,该值是二进制/布尔值,表示该节点是否存在于h
  2. 浏览l1并插入所有节点'地址为h
  3. 浏览l2。对于每个节点,检查它是否存在于h中。如果我们在h中找到一个节点,则此节点与l1l2相交。
  4. 此算法具有O(m + n)时间复杂度和O(m) h的额外辅助空间,其中m的大小为l1,{{1} }是n的大小。