[LeetCode] Remove Linked List Elements

아르당·2025년 10월 17일

LeetCode

목록 보기
48/68
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

연결 리스트 head와 정수 val이 주어졌을 때, Node.val == val인 연결 리스트의 모든 노드를 지우고, 새로운 head를 반환해라.

Example

#1

Input: head = [1, 2, 6, 3, 4, 5, 6], val = 6
Output: [1, 2, 3, 4, 5]

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

#3
Input: head = [7, 7, 7, 7], val = 7
Output: []

Constraints

  • 리스트에 있는 노드의 수는 0부터 10^4 범위위 안에 있다.
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

Solved

/**
 * 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 removeElements(ListNode head, int val) {
        if(head == null) return head;

        head.next = removeElements(head.next, val);
        
        return head.val == val ? head.next : head;
    }
}

주어진 head가 null이면 바로 null을 반환한다.
head.next에 removeElements를 재귀호출하고, 매개변수는 head.next와 val로 한다.
head.val과 val이 같다면 head.next를 반환하고 그렇지 않다면 head를 반환한다.

profile
내 마음대로 코드 작성하는 세상

0개의 댓글