题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
解题思路
- 先获取两个链表的长度;
- 谁长就遍历谁,只到二者当前链表长度相同的地方;
- 之后,同时遍历两个链表,找到第一个相同的节点,返回即可。
- 时间复杂度为O(N);
- 空间复杂度为O(1);
class Solution:
def FindFirstCommonNode(self , pHead1 , pHead2 ):
# write code here
n1 = 0
n2 = 0
p1 = pHead1
p2 = pHead2
while p1:
n1 += 1
p1 = p1.next
while p2:
n2 += 1
p2 = p2.next
p1 = pHead1
p2 = pHead2
if n1 > n2:
for i in range(n1-n2):
p1 = p1.next
else:
for i in range(n2-n1):
p2 = p2.next
while p1:
if p1 == p2:
return p1
p1 = p1.next
p2 = p2.next
return None
