Leetcode 面试题 02.07. 链表相交 Intersection of Two Linked Lists LCCI - Python 双指针法

# 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:
        curA, curB = headA, headB
#跑得快的一定会追上跑得慢的,类似于金星和地球都围绕太阳公转,总有一天太阳地球金星会位于同一条直线上
#当链表长度相同时,不管有无交点则两个链表都会查询相同次数找出交点,无交点时为NULL
#当长度不同时,两个指针总会有一次二者在交点或NULL处相遇。
#while循环的条件就是:只要二者不相等,就继续找
#以上就是该算法的精髓!
        while curA != curB:
            curA = curA.next if curA else headB
            curB = curB.next if curB else headA
        return curA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值