Remove Duplicates from Sorted Array II

来源:互联网 发布:java比较好的书籍 编辑:程序博客网 时间:2024/04/26 06:06
/*    Remove Duplicates from Sorted Array    Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.    Do not allocate extra space for another array, you must do this in place with constant memory.    For example,    Given input array A = [1,1,2],    Your function should return length = 2, and A is now [1,2].    上面这个已经做完了,上一题是下面这题的前提条件    Remove Duplicates from Sorted Array II    Follow up for "Remove Duplicates":What if duplicates are allowed at most twice?    For example,Given sorted array A = [1,1,1,2,2,3],    Your function should return length = 5, and A is now [1,1,2,2,3].*/#include<stdio.h>int removeDuplicates(int A[], int length){    if(length == 0){        return 0;    }    if(length == 1){        return 1;    }    int num = 1,i,temp=A[1];    for(i = 2; i < length; ++i){        if(A[i] != A[i - 2]){            A[num++] = temp;            temp = A[i];        }    }    A[num++] = temp;    for(int i = num; i < length; i++){        A[i] = 0x0;    }    printf("A[] = ");    for(int i = 0; i < num; i++){        printf("%d",A[i]);    }    printf("\n");    return num;}int main(){    int A[] = {1,1,1,2,2,3};    int length = sizeof(A)/sizeof(A[0]);    int count;    count = removeDuplicates(A,length);    printf("count = ");    printf("%d\n",count);    return 0;}

运行结果如图:
这里写图片描述