满意答案
awoo9463
2014.10.29
采纳率:43% 等级:8
已帮助:460人
/*只是个例子 有改进的空间 buf可能不需要 */
/*空间换时间的办法可以用 位图bitmap来做 效率更高*/
#include
#include
#include
int a[]={0,1,0,2,3,1,5,7,2};
int func(int* array,int len){
int i=0,j=0;
int repeat=0;
int* buf=(int*)malloc(len*sizeof(int));
int* flag=(int*)malloc(len*sizeof(int));
memset(buf,0,len*sizeof(int));
memset(flag,0,len*sizeof(int));
for(i=0;i
{
repeat=0;
for(j=i+1;j
if(array[i]==array[j]){
flag[j]=++repeat;
}
}
}
j=0;
for(i=0;i
{
if(flag[i]==0)
{
buf[j++]=array[i];
}
}
memcpy(a,buf,len*sizeof(int));
free(buf);
free(flag);
return j;
}
int main()
{
int newlen,i;
newlen=func(a,sizeof(a)/sizeof(int));
printf("new len %d \r\n",newlen);
for(i=0;i
{
printf("%d ",a[i]);
}
printf("\r\n");
}
00分享举报