一、有序数组去重问题
1.注意此时的数组是有序的;
2.unique函数属于STL中比较常用的函数,它的功能是元素去重,即“删除”序列中所有相邻元素的重复元素。此处的删除,并不是真正的删除,而是指重复元素的位置被不重复的元素给占领了。由于是它删除的是相邻的重复元素,所以在使用前,一般都会对目标序列进行排序;
3.unique函数返回的是对于数组而言为,去重后最后一个元素的指针,而其他容器则是返回去重后最后一个元素的迭代器;
4.快慢指针的使用;
二、两种方法实现
1.
#include<vector>
#include<algorithm>
using namespace std;
class Solution
{
public:
int removeDuplicates(vector<int>&nums){
nums.erase(unique(nums.begin(),unique.end()),nums.end());
return nums.size();
}
}
2.快慢指针的使用:
class Solution{
public:
int removeDuplicates(int* nums,int count)
{
int i,j;
i=0;
j=1;
for(j=1;j<count;j++)
{
if(nums[j]!=nums[i])
{
i++;
nums[i]=nums[j];
}
}
return i+1;
}
}
int main()
{
Solution answer;
int nums[10]={1,2,2,3,4,5,6,7,8,9};
int k=answer.removeDuplicates(nums, 10);
printf("%d\n", k);
for (int i = 0; i < k; i++) {
printf("%d,", nums[i]);
}
system("pause");
return 0;
}
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019061811122883.png)