《剑指offer》面试题13:两个链表的第一个公共节点

题目描述

输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
 

题目解析:

这道题是什么意思呢?如下图所示:
《剑指offer》面试题13:两个链表的第一个公共节点_第1张图片

 

 其中上面的为第一个链表,下面的为第二个链表,它们的公共结点指的就是它们结合之处的那个共同的节点。我们可以先将两个链表的Node分别放到不同的list列表里,然后对这两个列表里的Node进行遍历,发现如果正好有两个Node的数值和指向都是相同的的话就查找成功。因为一个Node想要相同的话,需要具有两个条件,一个条件是:

1.Node当中的数值相同

2.Node当中的指向的是同一个节点

因此代码如下所示:

class Solution:
    def FindFirstCommonNode(self, pHead1, pHead2):
        # write code here
        list_node_one=[]
        list_node_two=[]
        while pHead1:
            list_node_one.append(pHead1)
            pHead1=pHead1.next
            
        while pHead2:
            list_node_two.append(pHead2)
            pHead2=pHead2.next
        #如果是同一个节点,那么这个节点储存的下一个节点的地址以及节点里面的值相同
        for i in list_node_one:
            for j in list_node_two:
                if i.val==j.val and i.next==j.next:
                    return i
        return None

得解!

 

你可能感兴趣的:(《剑指offer》面试题13:两个链表的第一个公共节点)