题目
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");
}

执行结果
图片说明