您的位置:首页 > 其它

基础5---移除数组中的重复元素

2014-09-10 16:51 99 查看
现在写的可能不太高效,先记录下来以后有好算法再说。本题是已经排好序的,若无此条件得先排序。

给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度。

例如:

数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2}

要求:

不能新开数组分配额外的空间。即常数空间限制。

提示:

输入一个整数n,以及其对应的数组A
,输出新数组长度

样例输入
5
0 0 1 1 2


样例输出
3


#include <stdio.h>

int removeduplicate(int a[], int n)
{
    int t = 0;
    for(int i=1;i<=n;i++)
        if(a[i-1]==a[i])
            a[i-1]=a[i],t++;
    return n-t;
}

int main()
{
    int n;
    scanf("%d",&n);
    int a
;
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    printf("%d\n",removeduplicate(a, n));
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: