File tree Expand file tree Collapse file tree 1 file changed +37
-0
lines changed
remove-nth-node-from-end-of-list Expand file tree Collapse file tree 1 file changed +37
-0
lines changed Original file line number Diff line number Diff line change 1+ """
2+ 뒤에서 n번째 노드를 없애고, linked list head를 반환해라
3+
4+ TC: O(N), 리스트 한 번 순회
5+ SC: O(1), 포인터 2개만 사용
6+ """
7+
8+ from typing import Optional
9+
10+ # Definition for singly-linked list.
11+ class ListNode :
12+ def __init__ (self , val = 0 , next = None ):
13+ self .val = val
14+ self .next = next
15+
16+
17+ class Solution :
18+ def removeNthFromEnd (self , head : Optional [ListNode ], n : int ) -> Optional [ListNode ]:
19+ # dummy node를 head 앞에 두어 edge case(head 삭제 등) 처리
20+ dummy = ListNode (0 , head )
21+ first = dummy
22+ second = dummy
23+
24+ # first를 n+1칸 먼저 이동 -> 두 포인터 사이 간격이 n
25+ for _ in range (n + 1 ):
26+ first = first .next
27+
28+ # first가 끝에 도달할 때까지 두 포인터 함께 전진
29+ while first :
30+ first = first .next
31+ second = second .next
32+
33+ # second의 다음 노드가 삭제 대상이므로 연결 건너뛰기
34+ second .next = second .next .next
35+
36+ # 실제 head는 dummy.next에 있음
37+ return dummy .next
You can’t perform that action at this time.
0 commit comments