欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)

程序员文章站 2022-07-15 19:49:02
...

面试题52. 两个链表的第一个公共节点
输入两个链表,找出它们的第一个公共节点。
leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)
leetcode 160剑指offer面试题52. 两个链表的第一个公共节点(python3)
注意:

如果两个链表没有交点,返回 null.
在返回结果后,两个链表仍须保持原有的结构。
可假定整个链表结构中没有循环。
程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。
本题与主站 160 题相同:https://leetcode-cn.com/problems/intersection-of-two-linked-lists/
参考视频:https://www.bilibili.com/video/av46297857?from=search&seid=3425539323744682331

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:
        p1 , p2 = headA , headB
        while p1 != p2:
            if not p1:
                p1 = headB
            else:
                p1 = p1.next
            if not p2:
                p2 = headA
            else:
                p2=p2.next
        return p1