计蒜客 重复元素移除问题

问题描述

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

例如:数组 A={1,1,2},你的程序应该输出 22 即新数组的长度,新数组为 {1,2}。

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

输入格式

输入一个整数n(1≤n≤1000)。

接下来一行 n 个整数 A i(−1000≤A i≤1000),表示数组 A 中的每个元素。

输出格式

输出一个整数,表示新数组长度。

样例输入

5
0 0 1 1 2

样例输出

3

C++代码示例

#include <iostream>
#include <malloc.h>

using namespace std;

int removeElement(int A[],int n);

int main()
{
    int n,elem;
    int *A;
    cin>>n;

    A = (int*)malloc(n*sizeof(int));

    for(int i=0; i<n; i++)
    {
        cin>>A[i];
    }
    removeElement(A,n);
    return 0;
}

int removeElement(int A[],int n)
{
    int index = 0;
    for(int i=0; i<n; i++)
    {
        if(A[i]!=A[i+1])
        {
           index++;
        }
    }
    cout<< index;
}

备注

该问题的程序代码是在上一篇博客中,元素移除问题的基础之上进行修改的。代码原理比较简单,就是多次循环,判断是否有跟起始点重复的元素,如果没有的话,那么计数器就会加1。

猜你喜欢

转载自blog.csdn.net/m0_37592397/article/details/79795746