基礎5---移除數組中的重複元素

現在寫的可能不太高效,先記錄下來以後有好算法再說。本題是已經排好序的,若無此條件得先排序。


給定一個升序排列的數組,去掉重複的數,並返回新的數組的長度。

例如:

   數組A = {1, 1, 2},你的函數應該返回長度2,新數組爲{1, 2}

要求:

   不能新開數組分配額外的空間。即常數空間限制。

提示:

   輸入一個整數n,以及其對應的數組A[n],輸出新數組長度

樣例輸入

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[n];
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    printf("%d\n",removeduplicate(a, n));
    return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章