python相交链表
Posted 21座的胖子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python相交链表相关的知识,希望对你有一定的参考价值。
题目
思路
直接去比较肯定是不可行的,因为不知道什么时候访问A的下一个指针和B的下一个指针。数学思路:设立两个指针A和B分别等于headA和headB,A遍历一遍链表A走的路程设置为a,B遍历一遍链表B走的路程设置为b,如果A和B有重合,设重合的部分长度为c,那么指针A遍历完A再遍历B走到相交点的路程为a+b-c,同理指针B走完B再走A走到相交点的路程也是a+b-c,路程是一样的,所以可以同时走,设定条件A走完A再走B,B走完B再走A,直到A=B相遇的时候,这个点即为相交点。如果没有相交点,A走完A和B的距离和B走完B和A的距离也是相同的,此时A=B=NULL。
代码
# 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:
A, B = headA, headB ##设置两个假指针
while A!=B:
if A:
A = A.next ##A指针遍历链表A
else:
A = headB ##A指针遍历链表B
if B:
B = B.next ##B指针遍历链表B
else:
B = headA ##B指针遍历链表A
return A ##此时A的位置就是相交点的位置
以上是关于python相交链表的主要内容,如果未能解决你的问题,请参考以下文章