Remove Duplicates from Sorted Array
Remove Duplicates from Sorted Array
Two Pointers
Problem Statement
Given an integer array nums
sorted in non-decreasing order, remove the duplicates in-place such that each unique element appears only once. The relative order of the elements should be kept the same. Then return the number of unique elements in nums
.
Example
Example 1:
Input: nums = [1,1,2]
nums: [1, 1, 2]
Output: 2, nums: [1,2,_]
Output: 2, nums = [1,2,_]
Solution
The two-pointer approach is efficient for this problem. We use one pointer (`l`) to keep track of the position of the next unique element, and another pointer (`r`) to iterate through the array. If `nums[r]` is different from `nums[l]`, we increment `l` and place `nums[r]` at `nums[l]`.
Algorithm Steps
- Initialize a left pointer `l` to 0.
- Iterate through the array with a right pointer `r` starting from index 1.
- If `nums[r]` is not equal to `nums[l]`, increment `l` and set `nums[l] = nums[r]`.
- Return `l + 1`.
Remove Duplicates from Sorted Array
Two Pointers Approach
Input: nums = [1, 1, 2]
Output: 1, nums = [1, 1, 2]
Progress1 / 1
Ready to start the visualization
Nums
1
1
2
Remove Duplicates from Sorted Array Solution