Remove Duplicates from Sorted List II Leetcode Solution

In this post, we are going to solve the Remove Duplicates from Sorted List II Leetcode Solution problem of Leetcode. This Leetcode problem is done in many programming languages like C++, Java, and Python.

Remove Duplicates from Sorted List II Leetcode Solution
Remove Duplicates from Sorted List II Leetcode Solution

Problem

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:

Remove Duplicates from Sorted List II Leetcode Solution
Input: head = [1,2,3,3,4,4,5]
Output: [1,2,5]

Example 2:

Remove Duplicates from Sorted List II Leetcode Solution
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.

Now, lets see the leetcode solution of Remove Duplicates from Sorted List II Leetcode Solution.

Remove Duplicates from Sorted List II Leetcode Solution in Python

class Solution:
  def deleteDuplicates(self, head: ListNode) -> ListNode:
    dummy = ListNode(0, head)
    prev = dummy

    while head:
      while head.next and head.val == head.next.val:
        head = head.next
      if prev.next == head:
        prev = prev.next
      else:
        prev.next = head.next
      head = head.next

    return dummy.next

Remove Duplicates from Sorted List II Leetcode Solution in CPP

class Solution {
 public:
  ListNode* deleteDuplicates(ListNode* head) {
    ListNode dummy(0, head);
    ListNode* prev = &dummy;

    while (head) {
      while (head->next && head->val == head->next->val)
        head = head->next;
      if (prev->next == head)
        prev = prev->next;
      else
        prev->next = head->next;
      head = head->next;
    }

    return dummy.next;
  }
};

Remove Duplicates from Sorted List II Leetcode Solution in Java

class Solution {
  public ListNode deleteDuplicates(ListNode head) {
    ListNode dummy = new ListNode(0, head);
    ListNode prev = dummy;

    while (head != null) {
      while (head.next != null && head.val == head.next.val)
        head = head.next;
      if (prev.next == head)
        prev = prev.next;
      else
        prev.next = head.next;
      head = head.next;
    }

    return dummy.next;
  }
}

Note: This problem Remove Duplicates from Sorted List II is generated by Leetcode but the solution is provided by Chase2learn This tutorial is only for Educational and Learning purposes.

NEXT: Remove Duplicates from Sorted List

Sharing Is Caring