Leetcode Java Remove Linked List Elements

업데이트:

문제

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; }
 * }
 */
public class Solution {

  public ListNode removeElements(ListNode head, int val) {
    if (head == null) {
      return null;
    }
    ListNode next = this.removeElements(head.next, val);
    if (head.val == val) {
      return next;
    } else {
      head.next = next;
      return head;
    }
  }

}

결과

Link

설명

  1. 주어진 ListNode인 head에서 val값을 가진 ListNode를 제거하고 앞과 뒤의 ListNode를 이어주는 문제이다.

  2. 주어진 ListNode인 head가 null인 경우, null을 반환한다.

  3. head.next를 이용하여 재귀 호출을 수행한 결과를 next에 넣어둔다.
    • head.val의 값과 val 값이 동일한 경우, 다음 노드의 결과인 next를 반환한다.
    • head.val의 값과 val 값이 동일하지 않은 경우, head.next에 그대로 next를 넣고 head를 반환한다.
  4. 재귀 호출이 완료되면 val값이 포함된 ListNode를 제거한 head가 완성된다.

소스

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

댓글남기기