**剑指offer
两个链表的第一个公共结点 python**
1. 题目描述:
输入两个链表,找出它们的第一个公共结点
2. 思路:
这个链表相当于一个Y字形,我们可以把链表变为两个,分别是:
a1-a2-c1-c2-c3
b1-b2-b3-c1-c2-c3
设两个指针分别开始指向头结点,然后从头向后遍历
class Listnode():
def __init__(self,x):
self.val=x
self.next=None
class Solution:
def FindFirstCommonNode(self, pHead1, pHead2):
# write code here
if pHead1 == None or pHead2 == None:
return None
p1, p2 = pHead1, pHead2
while p1 != p2:
p1 = p1.next if p1 != None else pHead2
p2 = p2.next if p2 != None else pHead1
return p1
3.解释
-
Listen
-
开始:
-
迭代到之后
-
再之后
-
再在之后
-
死到临头
-
这就完了,题目精髓在于若链表长度不同,巧妙利用差值,当然此题解法众多,我只列其中一种,请各大神包含。
谢谢你看到了进步的尾巴