0
点赞
收藏
分享

微信扫一扫

160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。

图示两个链表在节点 c1 开始相交

160. 相交链表_数据

题目数据 保证 整个链式结构中不存在环。

示例 1:

160. 相交链表_链表_02

输入: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:

160. 相交链表_链表_03

输入: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

以下官方题解思路:

160. 相交链表_双指针_04

就是相交的话走到相交的节点所走的距离是一样。

举报

相关推荐

0 条评论