처음에는 몇 개인지 for 문으로 찾고 다시 for 문을 사용하여 삭제했다. 하지만 길이가 2 이하인 것들이 처리가 안돼서 포기.
그다음에는 투포인터로 풀었다.
s, e에 각각 tmp 노드를 할당하고 e를 먼저 n 만큼 출발 시켜서 간격을 유지했다.
e가 마지막 노드에 도착하면 s 노드를 확인하여 바꿔준다.
class Solution:
def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
tmp = ListNode()
tmp.next = head
s = tmp
e = tmp
for _ in range(n):
e = e.next
while e.next:
s = s.next
e = e.next
s.next = s.next.next
return tmp.next