给定一个升序排列的数组,去掉重复的数,并返回新的数组的长度。
例如:
数组A = {1, 1, 2},你的函数应该返回长度2,新数组为{1, 2}
要求:
不能新开数组分配额外的空间。即常数空间限制。
提示:
输入一个整数n,以及其对应的数组A[n],输出新数组长度
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int i,j,*a;
int n,len;
scanf("%d",&n);
a=(int*)malloc(n*sizeof(int));
len=n;
for(i=0;i<n;i++){
scanf("%d",&a[i]);
}
i=0;j=i+1;
while(j<n){
if(a[i]==a[j]){
len--;
i++;
j++;
}
else{
i++;
j++;
}
}
printf("%d",len);
return 0;
}
不是很好的一份代码……