一.题目描述:
输入两个链表,找出它们的第一个公共结点。
二.思路:
别人一般的思路是:先将两个链表存储到两个栈里面,然后对比两个栈的栈头,如果一样则继续出栈,如果不一样,就输出上一个出栈的节点
还可以使用一个栈,将一样的节点存入栈中,然后遍历两个链表中的任何一个,碰到第一个在栈内的就输出,当然肯定是第一种方法时间复杂度比较低。第二个方法的AC代码如下:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def FindFirstCommonNode(self, pHead1, pHead2):
# write code here
NodeList1=[]
NodeList2=[]
while pHead1:
NodeList1.append(pHead1)
pHead1=pHead1.next
while pHead2:
if pHead2 in NodeList1:
return pHead2
else:
pHead2=pHead2.next
return None
参考文献:https://blog.csdn.net/kongmin_123/article/details/82315013 这个链接里面讲的特别详细