输入两个无环的单链表,找出它们的第一个公共结点。
举个栗子:
pHead1: 1-2-3-4-6-7
pHead2: 4-5-6-7
那么这两条无环链表的公共节点就是6-7
设定两个指针分别指向这两条链表的头节点
当这两指针指向的节点不相等时一直遍历下去
p1 = p1 === null ? pHead2 : p1.next;
p2 = p2 === null ? pHead1 : p2.next;
如果某一条遍历完了就指向另一条链表的头节点继续遍历,否则就是next就可以
最后返回那些相等的节点
/*function ListNode(x){
this.val = x;
this.next = null;
}*/
function FindFirstCommonNode(pHead1, pHead2)
{
// write code here
if (!pHead1 || !pHead2) {
return null
}
let p1 = pHead1;
let p2 = pHead2;
while(p1 != p2) {
p1 = p1 === null ? pHead2 : p1.next;
p2 = p2 === null ? pHead1 : p2.next;
}
return p1
}
module.exports = {
FindFirstCommonNode : FindFirstCommonNode
};
这篇博客介绍了如何找到两个无环单链表的首个公共节点。通过设置两个指针,分别从两个链表的头节点开始,当指针指向的节点不相等时,将指针移动到下一个节点,直到找到相同节点。这种方法可以在O(n)的时间复杂度内解决此问题,其中n为两个链表的总长度。
279

被折叠的 条评论
为什么被折叠?



