본문 바로가기
Leetcode

203. Remove Linked List Elements

by Doromi 2024. 5. 1.
728x90
반응형

연결 리스트의 노드를 제거하는 문제입니다. 

이 문제는 주어진 연결 리스트의 헤드와 정수 val이 주어지며, Node.val == val인 모든 노드를 연결 리스트에서 제거하고 새로운 헤드를 반환해야 합니다.

예를 들어:

예제 1: 입력으로 head = [1,2,6,3,4,5,6], val = 6이 주어지면, 출력은 [1,2,3,4,5]가 됩니다.
예제 2: 입력으로 head = [], val = 1이 주어지면, 출력은 []가 됩니다.
예제 3: 입력으로 head = [7,7,7,7], val = 7이 주어지면, 출력은 []가 됩니다.
제약 조건은 다음과 같습니다1:

리스트의 노드 수는 범위 [0, 10^4] 내에 있습니다.
1 <= Node.val <= 50
0 <= val <= 50

 

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     public int val;
 *     public ListNode next;
 *     public ListNode(int val=0, ListNode next=null) {
 *         this.val = val;
 *         this.next = next;
 *     }
 * }
 */
public class Solution {
    public ListNode RemoveElements(ListNode head, int val) {
        ListNode dummy = new ListNode(0);
        dummy.next = head;
        ListNode current = dummy;

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

dummy 노드를 사용하여 head 노드 앞에 가상의 노드를 추가하고, current 노드를 순회하면서 val와 일치하는지 확인합니다.

dummy 노드를 생성하는 주요 이유는 연결 리스트의 첫 번째 노드를 처리할 때 발생할 수 있는 특별한 경우를 단순화 하는 것 입니다. 첫 번째 노드를 제거하는 경우와 그렇지 않은 경우를 동일하게 처리할 수 있습니다.

dummy 노드는 첫 번째 노드 앞에 추가되므로, 첫 번째 노드를 제거해야 하는 경우에도 dummy의 next 포인터를 변경하면 됩니다. 

 

728x90
반응형

'Leetcode' 카테고리의 다른 글

28. Find the Index of the First Occurrence in a String  (0) 2024.05.02
237. Delete Node in a Linked List  (0) 2024.05.01
20. Valid Parentheses  (0) 2024.04.29
21. Merge Two Sorted Lists  (0) 2024.04.23
112. Path Sum  (0) 2024.04.23