본문 바로가기
PROGRAMMING/LeetCode

[Leetcode] 19. Remove Nth Node From End of List_해설, 풀이, 설명

by HYUNHP 2022. 5. 17.
728x90
반응형

안녕하세요, HELLO

 

오늘은 Leetcode 알고리즘 문제 '19. Remove Nth Node From End of List'에 대해서 살펴보고자 합니다. 

 

알고리즘 문제, 코드, 해설 그리고 Leetcode에서 제공해준 solution 순서대로 정리하였습니다.


STEP 1. 'Remove Nth Node From End of List' 알고리즘 문제

 

STEP 2. 'Remove Nth Node From End of List' 코드(code)

 

STEP 3. 'Remove Nth Node From End of List' solution

 

반응형

 

STEP 1. 'Remove Nth Node From End of List' 알고리즘 문제

 

 

Given the head of a linked list, remove the nth node from the end of the list and return its head.

주어진 리스트에서 n번째 노드를 삭제하여, 삭제된 리스트를 반환하면 됩니다.

 

Constraints:

  • The number of nodes in the list is sz.
  • 1 <= sz <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

Follow up: Could you do this in one pass?


STEP 2. 'Remove Nth Node From End of List' 코드(code)

 

처음에는 리스트를 reverse 하여 slicing 하여 접근하려 했으나, 문제의 조건이 순서대로 진행하여 제거하는 것이기에 해당 방법으로는 진행을 포기했습니다. 시간을 투자하였지만, 제대로 마무리하지 못하여, 이번에는 Discussion에서 most votes를 받은 코드를 정리했습니다.

 

 

STEP 3. 'Remove Nth Node From End of List' solution

 

3가지 방법으로 푸는 방법을 정리해놔서, 추가적으로 검토하실 분은 참고하시기 바랍니다.

 

reference: https://leetcode.com/problems/remove-nth-node-from-end-of-list/discuss/8802/3-short-Python-solutions

 

■ Runtime: 37 ms, faster than 74.90% of Python3 online submissions for Remove Nth Node From End of List.
■ Memory Usage: 13.8 MB, less than 98.30% of Python3 online submissions for Remove Nth Node From End of List.

 

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        def remove(head):
            if not head:
                return 0, head
            i, head.next = remove(head.next)
            return i+1, (head, head.next)[i+1 == n]
        
        return remove(head)[1]

■ 마무리

 

오늘은 Leetcode 알고리즘 문제 '19. Remove Nth Node From End of List'에 대해서 알아봤습니다.

좋아요와 댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

 

반응형

댓글