3.Remove Duplicates from sorted array
Case 1: (Maintaining only one copy)
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
Example 1:
Input: nums = [1,1,2]
Output: 2, nums = [1,2]
Explanation: Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the returned length.Example 2:
Input: nums = [0,0,1,1,1,2,2,3,3,4]
Output: 5, nums = [0,1,2,3,4]
Explanation: Your function should return length = 5, with the first five elements of nums being modified to 0, 1, 2, 3, and 4 respectively. It doesn't matter what values are set beyond the returned length.class Solution
{
public:
int removeDuplicates(vector<int> &nums)
{
if (nums.size() == 0)
return 0;
int pos = 1;
int size = nums.size();
for (int i = 1; i < nums.size(); i++)
{
if(nums[i-1] != nums[i]){
nums[pos] = nums[i];
pos++;
}
else{
size--;
}
}
return size;
}
};Time Complexity: O(n) , Space Complexity: O(1)
Case II: (At most twice)
Given a sorted array nums, remove the duplicates in-place such that duplicates appeared at most twice and return the new length.
Example 1:
Example 2:
Time Complexity: O(n) , Space Complexity: O(1)
Last updated
Was this helpful?