两个链表的第一个公共节点

《剑指offer》刷题笔记。如有更好解法,欢迎留言。

关键字: 链表

题目描述:

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

思路:

1. 将链表A放入栈stack1
2. 将链表B放入栈stack2

1.png

2.png

3. 当两个栈不为空时,取出栈顶,判断是否相等。相等则放入结果栈res。

3.png

4. 结果栈栈顶就是第一个公共结点。

4.png

  • 完整代码
function FindFirstCommonNode(pHead1, pHead2)
{
    let res = [];
    let stack1 = [];
    let stack2 = [];
    if(pHead1 == null && pHead2 == null)return null;
    while(pHead1 !== null){
        stack1.push(pHead1);
        pHead1 = pHead1.next;
    }
    while(pHead2 !== null){
        stack2.push(pHead2);
        pHead2 = pHead2.next;
    }
    while(stack1.length && stack2.length){
        let a = stack1.pop();
        let b = stack2.pop();
        if(a.val === b.val){
            res.push(a);
        }
    }
    if(res.length) return res.pop();
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容