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 |