[LeetCode] 160. Intersection of Two Linked Lists

Chobby·3일 전
1

LeetCode

목록 보기
186/194

😎풀이

해당 문제의 풀이 과정은 다음과 같다.

  1. 전제로 headA와 headB의 요소 중 최소 하나의 노드는 반드시 교차함
  2. 각 root를 근원지로 한 노드들이 교차할 때까지 반복하며 요소의 끝에 도달했을 때 root로 이동함
  3. 교차된 요소를 반환함
function getIntersectionNode(headA: ListNode | null, headB: ListNode | null): ListNode | null {
    if(!headA || !headB) return null
    let [currentA, currentB] = [headA, headB]
    // currentA와 currentB는 반드시 만남
    while(currentA !== currentB) {
        // head에 끝에 달했을 때 head의 root로 이동하여 교차되는 순간을 캐치
        currentA = currentA ? currentA.next : headA
        currentB = currentB ? currentB.next : headB
    }

    return currentA
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글