[LeetCode] 19. Remove Nth Node From End of List

Chobby·2024년 8월 23일
1

LeetCode

목록 보기
56/194

ListNode 클래스 구조를 이해하고 투 포인터의 개념을 활용하여 풀어야 하는 문제이다.

클래스 구조에 길이를 구하는 메서드가 선언되어 있지 않으므로 첫번째 포인터로 진행하고 두번째 포인터는 n 만큼의 딜레이를 갖고 따라가며 특정 노드를 제거해야한다.

😎풀이

function removeNthFromEnd(head: ListNode | null, n: number): ListNode | null {
    const dummy = new ListNode(0);
    dummy.next = head;
    
    let first = dummy;
    let second = dummy;
    
    for (let i = 0; i <= n; i++) {
        first = first.next!;
    }
    
    while (first !== null) {
        first = first.next;
        second = second.next!;
    }
    
    // n만큼의 딜레이를 발생시켜 생긴 두번째 포인터의 다음 값이 생략되어야 하는 n번째 값
    second.next = second.next!.next;
    
    return dummy.next;
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글