剑指offer52:两个链表的第一个公共节点 python

    技术2022-07-11  65

    剑指offer52:两个链表的第一个公共节点 python

    题目描述解法

    题目描述

    解法

    该题思考的是,如果一个指针把这首先走一遍链表A再走一遍链表B,另一个指针首先走一遍链表B再走一遍链表A,如果两个指针同时出发,那么他们一定会在两个链表相接处相遇(因为两个指针都走了M+N步,其中M是链表A的总长度,N是链表B单独的那部分的长度(不包含两者相接的部分))。

    这时候如果没看明白的话,可以自己在纸上画一下~~

    那如果两个链表根本不相交呢?那我们可以认为他们是在null节点相交的呀~

    代码如下:

    class Solution: def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode: node1 = headA node2 = headB while node1 != node2: node1 = node1.next if node1 else headB node2 = node2.next if node2 else headA return node1
    Processed: 0.014, SQL: 9