《剑指offer》刷题笔记。如有更好解法,欢迎留言。
关键字:栈
链表
题目描述:
输入两个链表,找出它们的第一个公共结点。
思路:
1. 将链表A放入栈stack1
2. 将链表B放入栈stack2
3. 当两个栈不为空时,取出栈顶,判断是否相等。相等则放入结果栈res。
4. 结果栈栈顶就是第一个公共结点。
- 完整代码
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();
}