This post is a journal about how I solved the Remove Duplicates from Sorted Array problem from LeetCode.
Intuition
The problem requires us to remove duplicates from a sorted array in-place while maintaining the original order of elements. Since the array is sorted, duplicates are consecutive. This means we can efficiently identify and skip duplicates by comparing each element to the last unique element identified.
Approach
The key is to keep track of the position at which the next unique element should be placed. We start with an index pointing to the first position. As we iterate through the array, we compare each element with the last unique element found. If an element is greater than this last unique element, it means we have encountered a new unique number. We then place this new unique element at the current index and increment the index.
- Initialize a variable
currentNumber
to store the last added unique number. Set it to a value less than the smallest possible element (e.g.,int.MinValue
). - Use an
index
variable to track the position to insert the next unique number. Start with 0. - Iterate over each element in
nums
.- If the current element
num
is greater thancurrentNumber
, it is a unique number not yet added. - Update
currentNumber
withnum
and placenum
at the currentindex
. - Increment
index
to prepare for the next possible unique number.
- If the current element
- After processing,
index
will be the count of unique numbers, and the firstindex
elements innums
will be the unique elements.
Complexity
Time complexity: The algorithm iterates through the array once, making the time complexity (O(n)) where (n) is the length of the array.
Space complexity: The algorithm uses a constant amount of extra space, so the space complexity is (O(1)).
Code
public class Solution {
public int RemoveDuplicates(int[] nums) {
var currentNumber = int.MinValue;
var index = 0;
foreach(var num in nums){
if(num > currentNumber)
{
currentNumber = num;
nums[index++] = currentNumber;
}
}
return index;
}
}
Video
Conclusion
With this approach, we efficiently remove duplicates in-place resulting in the desired number of unique elements at the beginning of the array without using any additional space beyond a few variables.
Top comments (0)