题解 | #数字在升序数组中出现的次数#

数字在升序数组中出现的次数

https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2

//二分法查找
int GetNumberOfK(int* data, int dataLen, int k )
{
    int i=0;
    int count = 0;//记录k所出现的次数
    int left = 0;//数组最左边的数
    int ret = 0;//保护mid
    int right = dataLen-1;//数组最右边的数
    int mid = dataLen / 2;//中间数
    if(k==0)
    {
        return count;
    }
    while(left<right)
    {
        if(data[mid]<k)
        {
            left = mid;
            mid = (left + right) / 2;
        }
        if(data[mid]>k)
        {
            right = mid;
            mid = (left + right) / 2;
        }
        left++;
        right--;
    }
    if(data[mid] == k)
        {
            count++;
            ret = mid;
            while(data[mid-1] == k)
            {
                count++;
                mid--;
            }
            mid = ret;
            while(data[mid+1] == k)
            {
                count++;
                mid++;
            }
        }
    printf("%d",count);
    return count;
}

全部评论

相关推荐

05-22 17:07
已编辑
门头沟学院 Java
程序员牛肉:都啥时候了还jb打蓝桥杯呢,有限找实习。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
今天 14:00
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务