题目1
int cmp(int*a,int*b)
{
return *a-*b;
}
int findRepeatNumber(int* nums, int numsSize){
qsort(nums,numsSize,sizeof(int),cmp);
for(int i=1;i<numsSize;i++)
{
if(nums[i]==nums[i-1])
{
return nums[i];
}
}
return -1;
}
题目2
//二分法
//y总模板
int search(int* nums, int numsSize, int target){
int left=0;
int right=numsSize-1;
if(numsSize==0)
{
return 0;
}
//找出重复元素的下界
while(left<right)
{
//相等时向下移
int mid=(left+right)/2;
if(nums[mid]>=target)
{
right=mid;
}
else
{
left=mid+1;
}
}
int len1=right;
if(nums[right]!=target)
{
return 0;
}
left=0;
right=numsSize-1;
while(left<right)
{
//相等时向上收
int mid=(left+right+1)/2;
if(nums[mid]<=target)
{
left=mid;
}
else
{
right=mid-1;
}
}
return left-len1+1;
}
题目3
int missingNumber(int* nums, int numsSize){
int ret=0;
for(int i=0;i<=numsSize;i++)
{
ret^=i;
}
for(int i=0;i<numsSize;i++)
{
ret^=nums[i];
}
return ret;
}