【两日一练】学习记录
题目
1.删除一个有序数组中重复的元素。例如
1 ,2, 2,2,3,3,3,4,4,5,5,5,6,6,6 -> 1,2,3,4,5,6
思路
会位图的同学可以考虑位图(后面数据结构有讲)去重;不会的同学,遍历去除重复元素即可(可以存到另一个数组中;也可以用memmove往前一个一个地移数,或者也可以把整个后面的往前移(这个难度大))。
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//删除重复整型元素
void delete_num()
{
int arr[]={1,2,2,3,3,3,4,4,5,5,6,6};
int i,len=11;
for(i=1;i<=len;)
{
if(arr[i-1]==arr[i])
{
memmove(arr+i-1,arr+i,(len-i+1)*4);
len=len-1;
}else{
i++;
}
}
for(i=0;i<=len;i++)
{
printf("%3d",arr[i]);
}
printf("\n");
}
int main()
{
delete_num();
system("pause");
}执行结果
