박종훈 알고리즘 블로그

(Leetcode) 19 - Remove Nth Node From End of List

기회가 되어 달레님의 스터디에 참여하여 시간이 될 때마다 한문제씩 풀어보고 있다.

https://neetcode.io/practice


https://leetcode.com/problems/remove-nth-node-from-end-of-list/

내가 작성한 풀이

처음에는 linked list 의 길이를 재고, 어떤 node를 삭제해야하는지 확인하여 삭제하도록 하였다.

class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
		ListNode current = head;
        int length = 0;
        while(current != null) {
            length++;
            current = current.next;
        }

        if (length == 1) {
            return null;
        }

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

        int removeIndex = length - n;
        int pointer = 0;
        current = head;
        while (pointer < removeIndex - 1) {
            current = current.next;
            pointer++;
        }
        current.next = current.next.next;
        return head;
	}
}

TC, SC

시간 복잡도는 O(n)이고, 공간 복잡도는 O(1)이다.