您的位置:首页 > 编程语言 > C语言/C++

计蒜客 重复元素移除问题

2018-04-02 21:45 225 查看

问题描述

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

例如:数组 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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息