LeetCode203 Remove Linked List Elements
Author: Stefan Su
Create time: 2022-10-27 23:22:32
Location: New York City, NY, USA
Description Easy
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: []
Constrains
- The number of nodes in the list is in the range [0, 104].
1 <= Node.val <= 50
0 <= val <= 50
Analysis
This problem can be solved in two ways. The first way is addressing the first node in the linked list independently. But I recommend we can add a dummy node, which is also called sentinel, at the beginning of this linked list. And then go through the whole linked list until find the target val
. The next step is deletion. cur.next = cur.next.next
is a way to delete that node and the memory will be released in Python automatically.
Solution
- Dummy node version. (Sentinel)
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution(object):
def removeElements(self, head, val):
"""
:type head: ListNode
:type val: int
:rtype: ListNode
"""
dummy_head = ListNode(next=head)
cur = dummy_head
while cur.next != None:
if cur.next.val == val:
cur.next = cur.next.next
else:
cur = cur.next
return dummy_head.next
Hopefully, this blog can inspire you when solving LeetCode203. For any questions, please comment below.