剑指 Offer 52. 两个链表的第一个公共节点

题目描述:

输入两个链表,找出它们的第一个公共节点。

示例:

在这里插入图片描述
输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3
输出:Reference of the node with value = 8
输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链表 A 为 [4,1,8,4,5],链表 B 为 [5,0,1,8,4,5]。在 A 中,相交节点前有 2 个节点;在 B 中,相交节点前有 3 个节点。

思路:

两个指针,遍历后比较节点的值

代码:

1
2
3
4
5
6
7
8
9
var getIntersectionNode = function(headA, headB) {
var p1=headA;
var p2=headB;
while(p1 !== p2){
p1=(p1==null?headB:p1.next)
p2=(p2==null?headA:p2.next)
}
return p1;
};