- 문제 링크: https://leetcode.com/problems/remove-nth-node-from-end-of-list/

- 난이도: Medium

 

좀 분기를 많이 쳐서 풀었는데, 답지를 보고 무릎을 탁 쳤다

다음 노드가 head인 left, right 두 포인터를 만들고, n 만큼 right 포인터를 옮긴다

그 다음, right가 끝까지 도달할 때까지 left, right를 하나씩 옮긴다

그러면 left의 바로 다음 노드가 지우는 노드가 된다.

class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy = ListNode(0, head)
        left = dummy
        right = head

        while n > 0:
            right = right.next
            n -= 1

        while right:
            left = left.next
            right = right.next

        left.next = left.next.next
        return dummy.next
반응형