剑指 Offer II 023. 两个链表的第一个重合节点

74 阅读1分钟

剑指 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;
};