Description
Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val == val, and return the new head.
Example 1:
Input: head = [1,2,6,3,4,5,6], val = 6
Output: [1,2,3,4,5]
Example 2:
Input: head = [], val = 1
Output: []
Example 3:
Input: head = [7,7,7,7], val = 7
Output: []
Constraints:
- The number of nodes in the list is in the range
[0, 104]. 1 <= Node.val <= 500 <= val <= 50
Solution
The next value of each element is a smaller question in a linked list, using recursion to solve is very easy.
1) Finding the basic cases
- Whether the given linked list is empty.
- Whether the current linked list value is equal to the given
val
2) Finding the recursive relationship
- Each recursive call passes in the next node.
public static ListNode removeElements(ListNode head, int val) {
if (head == null) {
return null;
}
head.next = removeElements(head.next, val);
return head.val == val ? head.next : head;
}
Time Complexity
O(n)