【两日一练】学习记录
题目
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"); }
执行结果