LC 83-Remove Duplicate from Sorted List

Goody·2021년 1월 23일
0

알고리즘

목록 보기
11/122

문제

Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

예시

Input: head = [1,1,2]
Output: [1,2]




Input: head = [1,1,2,3,3]
Output: [1,2,3]

풀이

  • 중복된 값을 가진 링크드 리스트가 들어오면 중복을 제거한 링크드 리스트로 만드는 문제이다.
  • 문제 예시에 Inputhead = [1,1,2] 로 해놔서 배열을 입력받는건가? 싶었지만 배열로 표시한 건 예시일 뿐, 사실 headvalnext를 프로퍼티로 갖는 노드 객체이다.
    첫 번 째 head를 예로 들면, head가 1, head.next.next가 2라고 이해하면 될 듯 하다.
  • 링크드 리스트를 구현하기 위해서는 current 값을 지정하는게 거의 필수다.
  • currenthead를 저장하고, while문으로 currentcurrent.nextnull이 되지 않는지 계속 검사한다. (`current
  • current.valcurrent.next.val가 같으면 중복된 값이 있다는 얘기이므로, current.nextcurrent.next.next로 바꾼다. 그렇지 않다면 currentcurrent.next를 저장해서 한 칸 옆으로 이동한다.

코드

var deleteDuplicates = function(head) {
     let current = head;

       while(current !== null && current.next !== null){
           if(current.val === current.next.val) {
               current.next = current.next.next;
           } else {
               current = current.next;
           }
       }


   return head;
};

0개의 댓글