[Leetcode] 0019. 목록 끝에서 N번째 노드 제거

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크


주어진 머리 연결리스트에서 다음을 제거하세요. n 번째 목록 끝의 노드를 삭제하고 해당 노드의 헤드를 반환합니다.

 

예시 1:

입력: 머리 = [1,2,3,4,5], n = 2
산출: [1,2,3,5]

예 2:

입력: 머리 = [1], n = 1
산출: []

예시 3:

입력: 머리 = [1,2], n = 1
산출: [1]

 

제약:

  • 목록의 노드 수는 다음과 같습니다. sz.
  • 1 <= 크기 <= 30
  • 0 <= Node.val <= 100
  • 1 <= n <= sz

 

후속 조치: 한 번에 이 작업을 수행할 수 있습니까?

후속 조치: 한 번에 이 작업을 수행할 수 있습니까?

파이썬

				
					# 시간 복잡도: O(n) # 공간 복잡도: O(1) 입력 가져오기 선택적 클래스 ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class 해결 방법: def RemoveNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]: total = 0 countNode = resNode = head while countNode: total += 1 countNode = countNode.next delIdx = total - n - 1 delIdx < 0: head = head.next는 head currentIdx = 0을 반환하고 resNode: if currentIdx == delIdx: if resNode.next.next: resNode.next = resNode.next.next else: resNode.next = None return head else : resNode = resNode.next currentIdx += 1 반환 헤드 root = ListNode(1) root.next = ListNode(2) root.next.next = ListNode(3) root.next.next.next = ListNode(4) 루트. next.next.next.next = ListNode(5) print(Solution().removeNthFromEnd(root, 2))
				
			
ko_KR한국어