Leetcode Java Remove Duplicates from Sorted List

업데이트:

문제

Link

코드

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {

  public ListNode deleteDuplicates(ListNode head) {
    return this.recursive(head);
  }

  private ListNode recursive(ListNode head) {
    if (head == null) {
      return null;
    } else {
      if ((head.next != null && head.val == head.next.val)) {
        return this.recursive(head.next);
      } else {
        head.next = this.recursive(head.next);
        return head;
      }
    }
  }

}

결과

Link

설명

  1. 주어진 ListNode인 head의 val 값이 중복되지 않은 고유 값로 이루어진 ListNode를 반환하는 문제이다.

  2. 재귀 호출을 통해서 주어진 ListNode인 head의 중복된 값을 제거하고 역순으로 ListNode를 만들어 주어진 문제의 결과로 반환한다.

    • head가 null인 경우, 주어진 ListNode인 head의 마지막 값이므로 그대로 반환한다.
    • head가 null이 아닌 경우, head.next가 존재하고, head.val 값과 head.next의 val 값이 동일하면 현재 값과 다음 값이 동일한 경우이므로 무시하고 재귀 호출을 수행한 값을 반환한다.
    • 위의 경우가 아니면 중복된 값이 존재하지 않으므로 head.next에 해당 재귀 호출의 값을 넣고 head를 반환한다.
    • 재귀 호출을 통해 역순으로 중복이 제거되어 만들어진 ListNode를 주어진 문제의 결과로 반환한다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기