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;
}