面试题 02.07. 链表相交
题目
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null
。
图示两个链表在节点 c1
开始相交:
题目链接:力扣
思路
整体来看,如果相交,一定是最后面几个都是一样的,不会存在前面相交而后面不相交(因为一个节点只有一个指针,不能同时指向两个节点)。
比如链表A有7个节点,链表B有10个节点,相交的话,一定最后n(n <= 8)个节点完全一样。所以要先求出来差值,因为差值(前几个)是不可能相交的,然后从有可能相交的地方一个一个遍历,看看有没有相同节点。
第一步是求两个链表的长度,通过遍历的方法求就可以了。
第二步,我们假设A比B长,所以加入判断条件,如果B比A长,就对调A和B。
第三步,让比较长的链表,也就