Remove Duplicates from Sorted List
Post
Cancel

# LeetCode #83: Remove Duplicates from Sorted List (C/C++).

easy

source: https://leetcode.com/problems/remove-duplicates-from-sorted-list/
C/C++ Solution to LeetCode problem 83. Remove Duplicates from Sorted List.

## 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.

## Examples

### Example 1:

Input: head = [1,1,2]
Output: [1,2]

### Example 2:

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

We will use two pointers, one to explore each node, and one to keep tracking of the list and the element that points next.

• Initialize two pointers at the head.
• Move one pointer until the current node has a different value from the next node.
• Move once more this pointer.
• Point next of the other pointer to the pointer that moved first.
• Move the pointer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x, ListNode *next) : val(x), next(next) {} * }; */ class Solution { public: ListNode* deleteDuplicates(ListNode* head) { ListNode *f = head; ListNode *b = head; while (f) { if (f->next && f->val == f->next->val) { f = f->next; continue; } f = f->next; b->next = f; b = b->next; } return head; } }; 
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents
Trending Tags