两链表的首个共通节点(Python版本)
发布时间
阅读量:
阅读量
牛客网上的剑指 offer在线编程题目:
题目描述
输入两个链表,找出它们的第一个公共节点。
思路:
第一种情况:两个链表长度相同且存在交点
通过设置两个指针同步移动,步长保持一致,当两个指针指向的节点相同时(即 p1 == p2),则表示找到了第一个公共节点,此时退出循环并返回该节点。
第二种情况:两个链表长度相同但不存在交点
两个指针同步移动,直到其中一个到达链表末尾。当两指针均指向 None 时,说明没有交点,此时退出循环并返回其中一个指针。
第三种情况:两个链表长度不同但存在交点
初始阶段,两个指针同步移动。当其中一指针 p1 到达其所在链表的末尾时,表明该链表较短。此时将 p1 指向另一个较长链表的头节点,并继续移动。同样地,当另一指针 p2 到达其所在链表的末尾时,则将其指向较短链表的头节点。经过上述操作后,两指针所处的位置将具有相同的剩余路径长度,从而转化为第一种情况进行处理。
第四种情况:两个链表长度不同且不存在交点
初始阶段同样采用同步移动方式。当其中一指针 p1 到达其所在链表的末尾时,则将其指向另一较长链表的头节点;而当另一指针 p2 到达其所在链表的末尾时,则将其指向较短链表的头节点。完成这一调整后,两指针所处位置具有相同的剩余路径长度,并转化为第二种情况进行处理。
# -*- coding:utf-8 -*-
全部评论 (0)
还没有任何评论哟~
