DEV Community

Abhishek Chaudhary
Abhishek Chaudhary

Posted on

2 1

Remove Duplicates from Sorted List II

Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.

Example 1:

Input: head = [1,2,3,3,4,4,5]
Output: [1,2,5]

Example 2:

Input: head = [1,1,1,2,3]
Output: [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.

SOLUTION:

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def deldup(self, head: Optional[ListNode]) -> Optional[ListNode]:
        if not head:
            return head
        if head.val in self.dups or (head.next and head.val == head.next.val):
            self.dups.add(head.val)
            head = self.deldup(head.next)
        else:
            head.next = self.deldup(head.next)
        return head

    def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
        self.dups = set()
        head = self.deldup(head)
        return head
Enter fullscreen mode Exit fullscreen mode

Heroku

This site is built on Heroku

Join the ranks of developers at Salesforce, Airbase, DEV, and more who deploy their mission critical applications on Heroku. Sign up today and launch your first app!

Get Started

Top comments (0)

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay