常规方法是使用双指针。
int removeDuplicates(vector<int>& nums)
{
if(nums.size() < 2)
return nums.size();
int left = 1;
while(left < nums.size())
{
if(nums[left] == nums[left - 1])
break;
left ++;
}
int right = left + 1;
while(right < nums.size())
{
if(nums[right] == nums[right - 1])
right ++;
else
{
nums[left] = nums[right];
left ++;
right ++;
}
}
return left;
}
只使用容器看起来比较简洁,但是效率会降低。
int removeDuplicates(vector<int>& nums)
{
set<int> s(nums.begin(), nums.end());
nums.assign(s.begin(), s.end());
return s.size();
}

本文介绍了一种利用双指针法去除数组中重复元素的方法,并对比了使用容器方式实现的简洁性和效率差异。双指针法通过两个指针left和right遍历数组,仅当遇到不重复的元素时才进行移动并更新结果。此外,还提供了一个使用容器直接去重的方法。
188

被折叠的 条评论
为什么被折叠?



