Leetcode Java Remove Nodes From Linked 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 removeNodes(ListNode head) {
    if (head != null) {
      head.next = this.removeNodes(head.next);
      if (head.next != null && head.val < head.next.val) {
        return head.next;
      }
    }
    return head;
  }

}

결과

Link

설명

  1. 각 노드에서 해당 노드의 값보다 작은 좌측 노드를 제거하는 문제이다.

  2. head가 null이 아닌 경우, 아래를 수행한다.
    • head의 next 노드에 head의 next ListNode를 넣어 재귀 호출한 결과를 넣어준다.
    • 아래 경우 모두 만족하는 경우, head의 next ListNode를 반환한다.
      • head의 next 노드가 null이 아닌 마지막 노드가 아닌 값이 비교가 가능한 경우.
      • head의 val 값이 head의 next ListNode val 값보다 작아 제거되는 경우.
  3. 위 경우들을 만족하지 않는 경우, head를 반환한다.

소스

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

댓글남기기