给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
。
图示两个链表在节点 c1
开始相交:
题目数据 保证 整个链式结构中不存在环。
示例 1:
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
输出:Intersected at '8'
解释:相交节点的值为 8 (注意,如果两个链表相交则不能为 0)。
示例 2:
输入:intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
输出:Intersected at '2'
解释:相交节点的值为 2 (注意,如果两个链表相交则不能为 0)。
不会啊不会啊,菜菜菜
绝了,想到了双指针,但没想到要这样用
# 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) -> Optional[ListNode]:
if not headA and not headB:
return None
a = headA
b = headB
while a!=b:
if a:
a = a.next
else:
a = headB
if b:
b = b.next
else:
b = headA
return a
以下官方题解思路:
就是相交的话走到相交的节点所走的距离是一样。
标签:ListNode,相交,链表,headB,headA,160,节点 From: https://blog.51cto.com/u_16123878/7024996