题目描述
题解
哈希表法
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int result = 0, i = 0;
map<int, int>tmp;
while(i != nums.size()) {
if(tmp.count(nums[i]) != 0) {
nums.erase(nums.begin() + i);
continue;
}
tmp[nums[i]] = i;
i++;
result++;
}
return result;
}
};
时间复杂度为,空间复杂度为。
双指针法
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() == 0) return 0;
int i = 0;
for (int j = 1; j < nums.size(); j++) {
if (nums[j] != nums[i]) {
i++;
nums[i] = nums[j];
}
}
nums.resize(i + 1);
return (nums.size());
}
};
时间复杂度为,空间复杂度为。