Leetcode
203. Remove Linked List Elements
Leeter
2021. 11. 12. 10:12
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.
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
'''
[1] two pointers - inplace)
idea::
this problem can be solved using out-place. but, in-place also can be solved.
code::
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
reader=writer=dummy=ListNode(-1,head)
while writer:
reader=writer.next
while reader and reader.val==val:
reader=reader.next
writer.next=reader
writer=writer.next
return dummy.next
-T/C: O(n)
-S/C: O(1)
'''
class Solution:
def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]:
reader=writer=dummy=ListNode(-1,head)
while writer:
reader=writer.next
while reader and reader.val==val:
reader=reader.next
writer.next=reader
writer=writer.next
return dummy.next