1. 程式人生 > >缺失的第一個正數(firstMissingPositive)

缺失的第一個正數(firstMissingPositive)

int firstMissingPositive(int* nums, int numsSize) {
    int smallest=INT_MAX;
    int bigest=0,i=0;
    for(i=0;i<numsSize;i++){
        if(nums[i]<=0)continue;
        if(nums[i]<smallest)smallest=nums[i];
        if(nums[i]>bigest)bigest=nums[i];
    }
    if(smallest>1)return 1;
    int *temp=(int *)calloc(bigest+1,(sizeof(int))),*head=temp;
    for(i=0;i<numsSize;i++){
        if(nums[i]<=0)continue;
        int tmp=nums[i]-1;
        if(temp[tmp]==0)temp[tmp]=1;
    }
    while(*(temp++)!=0);
    return temp-head;
}