本文共 1197 字,大约阅读时间需要 3 分钟。
为了解决这个问题,我们需要找到两个单链表的交点。交点是两个链表中的相同节点,并且不能返回0这个节点。
为了找到两个链表的交点,我们可以利用以下方法:
这种方法确保了我们在O(n)时间复杂度和O(1)空间复杂度内找到交点。
class ListNode: def __init__(self, val): self.val = val self.next = Nonedef getLen(node): if node is None: return 0 res = 0 while node is not None: res += 1 node = node.next return resdef getIntersectionNode(headA, headB): lenA = getLen(headA) lenB = getLen(headB) # 计算长度差 len_diff = abs(lenA - lenB) # 使较长的链表走到差的位置 if lenA > lenB: currentA = headA for _ in range(len_diff): currentA = currentA.next else: currentB = headB for _ in range(len_diff): currentB = currentB.next # 同时移动两个指针 while currentA is not None and currentB is not None: if currentA == currentB: return currentA currentA = currentA.next currentB = currentB.next return None
转载地址:http://zthiz.baihongyu.com/