160. Intersection of Two Linked Lists

Bas·2022년 8월 14일
0

Leetcode

목록 보기
5/11

각 linked-list를 순회하면서, pointerA, pointerB가 지정하는 곳이 같으면 그pointer을 return한다.

var getIntersectionNode = function(headA, headB) {
    if (!headA || !headB) return null;
    
    // 포인터를 정해준다.
    let pointer1 = headA;
    let pointer2 = headB;
    
    while (pointer1 !== pointer2) {
        pointer1 = pointer1.next;
        pointer2 = pointer2.next;
        
        if (pointer1 === pointer2) {
            return pointer1; 
            // 두 linked-list가 이어져있지 않을 때에도, 
            // pointer1, pointer2가 둘 다 null을 가리키면 null을 반환하니까 맞음
        }
        if (!pointer1) {
            pointer1 = headB;
        }
        if (!pointer2) {
            pointer2 = headA;
        }
    }
    
    return pointer1;
};

TODO - 이 방법은 왜 안될까? 해결해야 함.

linked-listA, B의 첫 번째 교차 점을 찾아내는 것임.
두 대의 linked-list를 거꾸로 돌린 후, node.next가 다른 지점의 node.val을 찾으면 될 듯.

  • 예외 2가지
    linked-listA,B 모두 null이면 null반환.
    linked-listA,B가 revers되었을 때, node.val가 다르면 null 반환
profile
바스버거

0개의 댓글