0
点赞
收藏
分享

微信扫一扫

剑指offer——day4

前行的跋涉者 2022-04-13 阅读 90

在这里插入图片描述

题目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;
}
举报

相关推荐

0 条评论