输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
function FindFirstCommonNode(pHead1, pHead2) {
let p1 = pHead1
let p2 = pHead2
while (p1 != p2) {
// 两个指针都走完两条链表公共节点前的部分
// 这样确保了达到公共节点的时候,两个指针走了相同的步数
// 且一个指针此时在p1上,一个在p2上
// 如果两个链表没有公共节点,则两个指针最终都会走到null,不满足p1!=p2跳出循环
p1 = p1 ? p1.next : pHead2
p2 = p2 ? p2.next : pHead1
}
return p1
}