[Linked List, Two Pointer] Remove Nth Node From End of List

2021. 4. 6. 14:15카테고리 없음

Linked List와 n을 input으로 받았을 때, 뒤에서부터 n번째 원소를 지우고 다시 List를 리턴하는 문제.

 

two pointer를 사용할 것이다. pointer2은 0번째 원소를 pointer1 는 n번째 원소를 가리키도록 한다. 이는 n만큼 loop시키면 next를 옮기면 된다.

이 시점에서 ponter1을 끝까지 이동시키고(pointer.next가 null일때까지) 그 만큼 ponter2를 이동시키면, pointer2는 끝에서부터 n번째만큼 앞에 있는 원소를 가리킨다. 

 

pointer2.next가 우리가 원하는 뒤로부터 n번째 원소이다. 따라서 next를 next.next로 바꿔준다.

만약 원소가 1개짜리라면 pointer1.next가 null이 된다. 

그 경우 head를 .next를 이용해 옮겨준다.