剑指 Offer II 023. 两个链表的第一个重合节点
方法1
var getIntersectionNode = function (headA, headB) {
var set = new Set()
while (headA || headB) {
if (headA) {
if (set.has(headA)) {
return headA
} else {
set.add(headA)
headA = headA.next
}
}
if (headB) {
if (set.has(headB)) {
return headB
} else {
set.add(headB)
headB = headB.next
}
}
}
return null
};
方法2
var getIntersectionNode = function (headA, headB) {
var node1 = headA;
var node2 = headB;
var n = 0;
while (node1 !== node2) {
node1 = node1.next;
node2 = node2.next;
if (node1 == null) {
node1 = headB;
n++;
if (n == 2) return null;
}
if (node2 == null) {
node2 = headA;
}
}
return node1;
};