Here, We see Remove Duplicates from Sorted List II LeetCode Solution. This Leetcode problem is done in many programming languages like C++, Java, JavaScript, Python, etc. with different approaches.
List of all LeetCode Solution
![Remove Duplicates from Sorted List II LeetCode Solution](https://i0.wp.com/totheinnovation.com/wp-content/uploads/2024/02/LeetCode-Problem-Solution.png?resize=200%2C200&ssl=1)
Remove Duplicates from Sorted List II LeetCode Solution
Table of Contents
Problem Statement
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]
Remove Duplicates from Sorted List II Leetcode Solution C++
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(!head||!head->next) return head;
ListNode* dummy = new ListNode(0);
ListNode* tail = dummy;
int flag = true; // should the current head be added ?
while(head){
while(head&&head->next&&head->val==head->next->val)
{
flag = false; // finds duplicate, set it to false
head = head->next;
}
if(flag) // if should be added
{
tail->next = head;
tail = tail->next;
}
head = head->next;
flag = true; // time for a new head value, set flag back to true
}
tail->next = nullptr; // Don't forget this... I did..
return dummy->next;
}
};
Code language: PHP (php)
Remove Duplicates from Sorted List II Leetcode Solution Java
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dummy = new ListNode(0), fast = head, slow = dummy;
slow.next = fast;
while(fast != null) {
while (fast.next != null && fast.val == fast.next.val) {
fast = fast.next; //while loop to find the last node of the dups.
}
if (slow.next != fast) { //duplicates detected.
slow.next = fast.next; //remove the dups.
fast = slow.next; //reposition the fast pointer.
} else { //no dup, move down both pointer.
slow = slow.next;
fast = fast.next;
}
}
return dummy.next;
}
}
Code language: PHP (php)
Remove Duplicates from Sorted List II Leetcode Solution JavaScript
var deleteDuplicates = function(head) {
if (head == null || head.next == null)
return head;
var fake = new ListNode(0);
fake.next = head;
var curr = fake;
while(curr.next != null && curr.next.next != null){ // curr.next means the next node of curr pointer and curr.next.next means the next of next of curr pointer...
if(curr.next.val == curr.next.next.val) {
let duplicate = curr.next.val;
while(curr.next !=null && curr.next.val == duplicate) {
curr.next = curr.next.next;
}
}
else{
curr = curr.next;
}
}
return fake.next;
};
Code language: JavaScript (javascript)
Remove Duplicates from Sorted List II Solution Python
class Solution(object):
def deleteDuplicates(self, head):
fake = ListNode(-1)
fake.next = head
curr, prev = head, fake
while curr:
while curr.next and curr.val == curr.next.val:
curr = curr.next
if prev.next == curr:
prev = prev.next
curr = curr.next
else:
prev.next = curr.next
curr = prev.next
return fake.next