m2 找到两个链表的交叉点

代码

 def get_intersection_node(self,headA, headB):
            """
            使用双指针的方法来更简单地找到两个链表的第一个交叉点。双指针方法如下:
            定义两个指针 pA 和 pB 分别指向两个链表的头部 headA 和 headB。
            同时移动指针 pA 和 pB,当其中一个指针到达链表的末尾时,将其指向另一个链表的头部。
            当两个指针相遇时,即为第一个交叉点
            """
            if not headA or not headB:
                return None

            pA, pB = headA, headB
            while pA != pB:
                pA = pA.next if pA else headB
                pB = pB.next if pB else headA
            return pA

        """测试
            # 创建两个链表
            intersect_node = ListNode(8, ListNode(4, ListNode(5)))
            headA = ListNode(4, ListNode(1, intersect_node))
            headB = ListNode(5, ListNode(0, ListNode(1, intersect_node)))

            # 输出第一个交叉点的值
            print(get_intersection_node(headA, headB).val)
        """
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容