📅  最后修改于: 2023-12-03 15:40:22.850000             🧑  作者: Mango
在单链表中查找公共节点,是一道面试过程中经典的问题。在这里我们提供一种比较简单的方案,基于哈希表实现,时间复杂度为O(n)。
给出两个单链表,将它们相交的节点找出来,并返回该节点。如果两个链表没有相交,返回空值。
我们可以将第一个链表中所有节点都存放到一个哈希表中。然后遍历第二个链表的同时,在哈希表中查找该节点是否存在。若存在,则该节点就是第一个相交节点。
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
class Solution:
def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
node_set = set()
while headA:
node_set.add(headA)
headA = headA.next
while headB:
if headB in node_set:
return headB
headB = headB.next
return None
该算法的时间复杂度为O(n),其中n为两个链表的节点之和。空间复杂度为O(n)。因为我们需要使用哈希表存储第一个链表的节点。