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)