此题与lc160.想叫链表相同。思路很简单,也可以说是双指针法,即将两个链表拼接,得到两个相同长度但前后顺序不同的链表(假设输入的是两个链表X和Y,则拼接成的新链表为XY和YX)。分别从头遍历这俩链表,当节点值相等时则为相交位置,否则遍历结束返回指针指向的None。该算法的时间复杂度为O(M+N),空间复杂度为O(N)。
# 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
PREVIOUSlc003.无重复字符的最长子串
NEXTlc118.杨辉三角