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

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

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-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
一口洪烧肉:哈哈哈哈哈哈哈哈哈哈哈硬要啊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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