天天看点

力扣(leetcode) 160. 相交链表(走相同的路)

题目在这:​​https://leetcode-cn.com/problems/intersection-of-two-linked-lists/​​

题目分析:

要仔细看题目,题目中要求的是:‘请你找出并返回两个单链表相交的起始节点’ 。而不是节点所指向的值。

题目是想要找到相交节点的指针~ 其次节点的val是可以重复出现的,仅仅比较val是会出错的。

思路分析:

有一个方法,就是A指针指向第一个链表,B指针指向第二个链表,两个指针同时向后移动。

若A指针已经指向第一个链表最后一个了,则下一步就去第二个链表的开头。

同理B指针已经指向第二个链表的最后一个了,则下一步就取第一个链表的开头。

链表问题 还是看图来得快

看图!!!!!

A, B = headA,headB
while A!= B:   # 若不相交  则最后会都跑到null了
    if A:
        A = A.next
    else:
        A = headB
    if B:
        B = B.next
    else:
        B = headA
return      

可以理解成两个人速度一致, 走过的路程一致。那么肯定会同一个时间点到达终点。