| Excerpt |
|---|
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length. |
...
Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory. |
Example 1:
| Code Block |
|---|
Given nums = [1,1,2], 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. |
...
| Code Block |
|---|
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
map<int,int> mp;
for(int i=0; i<nums.size(); i++) {
if (!mp[nums[i]]) {
mp[nums[i]]=i;
nums[ mp.size()-1] = nums[i];
}
}
return mp.size();
}
}; |
Solution in Java
| Code Block |
|---|
public int removeDuplicates(int[] nums) {
if (nums.length == 0) return 0;
int i = 0;
for (int j = 1; j < nums.length; j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
return i + 1;
} |