본문 바로가기

Algorithm

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

문제해석

linked list의 head가 주어졌을 때 리스트의 마지막부터 n번째 노드를 제거하고 헤드를 반환하라

 

정답 예

public ListNode removeNthFromEnd(ListNode head, int n) {
    int size = 1;
    ListNode node = head;
    // 리스트 사이즈 측정
    while (node.next != null) {
        size++;
        node = node.next;
    }

    if (n == 1 && size == 1) {
        return null;
    }

    if (n == size) {
        return head.next;
    }

    node = head;
    for (int i=0; i<size;i++) {
    	// 삭제할 노드의 이전 위치에서 다음노드를 건너서 재정의
        if (i == size-n-1) {
            node.next = node.next.next;
        } else {
            node = node.next;
        }
    }
    return head;
}