Problem
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.
- Definition for singly-linked list from LeetCode.
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val=0, ListNode next=null) {
this.val = val;
this.next = next;
}
}
Approach
Pretty straight-forward approach
Exit early to prevent unnecessary loop creation or single nodes
Check if the current value, is the same as the next value (i.e a duplicate), if it is then we skip over the next item by setting the next item, to the one after it with `current.next.next.
Code
`csharp
public ListNode DeleteDuplicates(ListNode head)
{
if (head == null || head.next == null)
return head;
ListNode current = head;
while (current.next != null)
{
if (current.val == current.next.val)
{
// Skip the duplicate node
current.next = current.next.next;
}
else
{
current = current.next;
}
}
return head;
}
`
As always if you want to hear about more articles like this , drop me a follow on DevTo, or twitter/x
Top comments (0)