//稍显麻烦了
void exchange(int *p,int *q)//先排好序,一样的元素在一起,之后很快就能检测出只有一个的元素
{
int t = *p;
*p = *q;
*q = t;
}
int quicksort(int left,int right,int *nums) //快速排序
{
if(left >= right)
{
return 0;
}
int i,j,temp;
temp = nums[right];
i = left;
j = right;
while(i!=j)
{
while(i<j&&temp>=nums[i])
{
i++;
}
exchange(&nums[i],&nums[j]);
while(i<j&&temp<=nums[j])
{
j--;
}
exchange(&nums[i],&nums[j]);
}
quicksort(i+1,right,nums);
quicksort(left,j-1,nums);
return 0;
}
int singleNumber(int* nums, int numsSize)
{
quicksort(0,numsSize-1,nums);
int c = 0,one = nums[0];
for(int i=0;i<numsSize;i++)
{
if(one == nums[i])
{
c++;
}
else
{
if(c == 1)
{
return one;
}
one = nums[i];
c = 1;
}
}
return one;
}