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相交链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode题解160_相交链表

leetcode 相交链表 python实现

LeetCode第160题—相交链表—Python实现

LeetCode第160题—相交链表—Python实现

leetcode刷题17.相交链表——Java&python版

2021/5/20 刷题笔记相交链表以及双指针法