문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
연결 리스트 head와 정수 val이 주어졌을 때, Node.val == val인 연결 리스트의 모든 노드를 지우고, 새로운 head를 반환해라.
#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: []
/**
* 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를 반환한다.