lc160.相交链表

 

相交链表

看到群友在群里聊到面试问了这个题,记得之前做过有印象,就随手做了一下,思路很简单,也可以说是双指针法,即将两个链表拼接,得到两个相同长度但前后顺序不同的链表(假设输入的是两个链表X和Y,则拼接成的新链表为XY和YX)。分别从头遍历这俩链表,当节点值相等时则为相交位置,否则遍历结束返回指针指向的None。

# 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:
        h1, h2 = headA, headB
        while h1 != h2:
            h1 = h1.next if h1 else headB
            h2 = h2.next if h2 else headA
        return h1