leetcode:数组之Remove Duplicates from Sorted Array
去除有序数组中重复的元素,例如a=[1,1,2,3];输出a=[1,2,3],返回数组长度。
主要思路:取出每一个元素,通过if判断直到遇到不相同的元素,写入数组中
c++实现
#include<iostream>
using namespace std;
int removeDuplicate(int a[],int n)
{
if(n==0) return n;
int index=0;
for(int i=1;i<n;i++)
{
if (a[index] != a[i])
{
++index;
a[index] = a[i];
}
}
return index+1;
}
int main()
{
int a[4]={1,1,2,3};
int lenght;
lenght=removeDuplicate(a,4);
for(int i=0;i<lenght;i++)
cout<<a[i];
cout<<endl<<lenght<<endl;
return 0;
}
leetcode:数组之Remove Duplicates from Sorted Array 2
去除有序数组中重复次数为3的元素,例如a=[1,1,1,2,2,3];输出a=[1,1,2,2,3],返回数组长度。
C++实现:
#include<iostream>
using namespace std;
int removeDuplicate2(int a[],int n)
{
if(n<=2) return n;
int index=2;
for(int i=2;i<n;i++)
{
if( a[index-2]!=a[i])
{
a[index++]=a[i];
}
}
return index;
}
int main()
{
int a[6]={1,1,1,2,2,3 };
int lenght=0;
lenght=removeDuplicate2(a, 6);
for(int i=0;i<lenght;i++)
cout<<a[i];
cout<<endl<<lenght<<endl;
return 0;
}
测试结果:
根据Remove Duplicates from Sorted Array 2,可扩展为去除重复次数为n的数组。