删除排序数组中重复的元素

来源:互联网 发布:unity3d物体移动脚本 编辑:程序博客网 时间:2024/05/21 21:40

题目:从排序的数组中删除重复的元素,使得每个元素仅出现一次,返回数组的长度。

比如:[1,1,2]

删除后变成:[1,2],长度为2

int Remove(int a[],int n){int i=0;for(int j=1;j<n;j++){if(a[j]!=a[i])  //如果当前元素和不重复元素数组的最后一个元素不相等a[++i]=a[j];}return i+1;}
变型:允许重复元素最多出现两次。

int Remove(int a[],int n){int i=1;for(int j=2;j<n;j++){if(a[j]!=a[i-1]) //如果当前元素和不重复元素数组的倒数第二个元素不相等a[++i]=a[j];}return i+1;}
另一种解法:

int Remove(int a[],int  n){int i=0;for(int j=0;j<n;j++){if(j>0&&j<n-1&&a[j]==a[j-1]&&a[j]==a[j+1]) //如果一个元素和它前一个和后一个相同,就是重复次数多于2的,跳过continue;a[i++]=a[j];  //只保留重复元素的第一个和最后一个}return i;}






0 0
原创粉丝点击