Skip to main content

Leetcode 26: Remove Duplicates from Sorted Array

 

1. Problem Statement (Simple Explanation):


You are given an integer array nums that is sorted in non-decreasing order.

You must:

  • Remove duplicates in-place so that each unique element appears only once.

  • Keep the relative order of unique elements.

  • Return k, the number of unique elements.

After your function:

  • The first k elements of nums should contain the unique elements in sorted order.

  • Anything beyond index k - 1 can be ignored.

You must use only constant extra space O(1).


2. Examples:


Example 1:


Input: nums = [1,1,2]

Unique elements are [1,2].

Output: k = 2, nums = [1,2,_]

(Underscore means “don’t care” beyond k.)


Example 2:


Input: nums = [0,0,1,1,1,2,2,3,3,4]

Unique elements: [0,1,2,3,4].

Output: k = 5, nums = [0,1,2,3,4,_,_,_,_,_]


Constraints:


  • 1 <= nums.length <= 3 x 104

  • -100 <= nums[i] <= 100

  • nums is sorted in non-decreasing order.


3. Approach – Two Pointers (Slow/Fast) In-Place:


Because the array is sorted, duplicates are grouped together. We can use two pointers:

  • i (slow pointer): position of last unique element.

  • j (fast pointer): current position we’re scanning.


Intuition:


  • Start with the first element as unique.

  • Traverse from left to right:

    • If nums[j] != nums[i], we found a new unique element:

      • Move i one step to the right.

      • Copy nums[j] to nums[i].

    • If nums[j] == nums[i], it’s a duplicate, skip it.

At the end:

  • The first i + 1 elements of nums are the unique values.

  • Return i + 1 as k.


Algorithm (Step-by-Step):


  1. If nums.length == 0 (not needed per constraints, but safe), return 0.

  2. Initialize:

    • i = 0 (index of last unique element).

  3. For j from 1 to n - 1:

    • If nums[j] != nums[i]:

      • i++

      • nums[i] = nums[j].

  4. After the loop, the number of unique elements is i + 1.

  5. Return i + 1.


Pseudo-code:



Complexity:


Let n = len(nums):

  • Time: O(n)

Each element is visited once.

  • Space: O(1)

In-place, only a few extra variables.


4. Java code:



5. C code:



6. C++ code:



7. Python code:



8. JavaScript code:



Comments