83 Remove Duplicates from Sorted List

Given the `head` of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

Example 1:

``````1 -> 1 -> 2
|
v
1 -> 2

Input: head = [1,1,2]
Output: [1,2]
``````

Example 2:

``````1 -> 1 -> 2 -> 3 -> 3
|
v
1 -> 2 -> 3

Input: head = [1,1,2,3,3]
Output: [1,2,3]
``````

Constraints:

• The number of nodes in the list is in the range `[0, 300]`.
• -100 <= `Node.val` <= 100
• The list is guaranteed to be sorted in ascending order.
 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 `````` ``````# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next ''' Recursive ''' class Solution: def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]: if not head or not head.next: return head head.next = self.deleteDuplicates(head.next) if head.val == head.next.val: return head.next return head ''' Iterative ''' class Solution: def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]: current = head while current and current.next: if current.next.val == current.val: current.next = current.next.next else: current = current.next return head``````