/**
* Note: The returned array must be malloced, assume caller calls free().
*/
// 负数?
int* singleNumber(int* nums, int numsSize, int* returnSize){
*returnSize=2;
int max=INT_MIN;
int i=0,j=0;
for(i=0;i<numsSize;i++)
{
if(max<nums[i])
max=nums[i];
}
int *countArr=(int *)calloc(max+1, sizeof(int));
i=0;
while(i<numsSize) // 这里for很奇怪,好像初始化i后,i的值并没有等于0,改成while就解决了
{
countArr[nums[i++]]++;
}
int *retArr=(int *)calloc(2, sizeof(int));
for(i=1;i<=max;i++)
{
if(countArr[i]==1)
{
retArr[j++]=i;
if(j==2)
break;
}
}
free(countArr);
return retArr;
}
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
// 负数?
void singleNumber(int* nums, int numsSize)
{
int max=0;
int i=0,j=0;
for(i=0;i<numsSize;i++)
{
if(max<nums[i])
max=nums[i];
}
int *countArr=(int *)calloc(max+1, sizeof(int));
for(i=0;i<numsSize;i++) // ???这里注意分号
{
countArr[nums[i]]++;
}
int *retArr=(int *)calloc(2, sizeof(int));
for(i=1;i<=max;i++)
{
if(countArr[i]==1)
{
retArr[j++]=i;
if(j==2)
break;
}
}
free(countArr);
for(i=0;i<2;i++)
printf("%d\t",retArr[i]);
printf("\n");
}
int main()
{
int a[6]={1,2,1,3,2,5};
singleNumber(a,6);
return 0;
}