LeetCode Solutions
203. Remove Linked List Elements
Time: $O(n)$ Space: $O(1)$
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode dummy(0, head);
ListNode* prev = &dummy;
for (; head; head = head->next)
if (head->val != val) {
prev->next = head;
prev = prev->next;
}
prev->next = nullptr; // In case the last val == val
return dummy.next;
}
};
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode dummy = new ListNode(0, head);
ListNode prev = dummy;
for (; head != null; head = head.next)
if (head.val != val) {
prev.next = head;
prev = prev.next;
}
prev.next = null; // In case the last val == val
return dummy.next;
}
}
class Solution:
def removeElements(self, head: ListNode, val: int) -> ListNode:
dummy = ListNode(0, head)
prev = dummy
while head:
if head.val != val:
prev.next = head
prev = prev.next
head = head.next
prev.next = None
return dummy.next