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

来源:互联网 发布:矩阵论 方保镕 答案pdf 编辑:程序博客网 时间:2024/06/06 00:10

题目:统计一个数字在排序数组中出现的次数。

Tag:二分


int findNumK(int *num, int n, int K){    if(n == 0 || num == NULL)        return 0;    int firstK, lastK;    int mid;    //findFirstK    int l = 0, r = n - 1;    int flag = false;    while(l <= r)    {        int mid = (int)((l + r) / 2);        if(num[mid] == K)        {            flag = true;            if(mid == 0 || num[mid-1] != K)            {                firstK = mid;                break;            }            else            {                r = mid - 1;            }        }        else if(K > num[mid])        {            l = mid + 1;        }        else        {            r = mid - 1;        }    }    if(flag == false)        return 0;    //findLastK    l = 0;    r = n - 1;    flag = false;    while(l <= r)    {        int mid = (int)((l + r) / 2);        if(num[mid] == K)        {            flag = true;            if(mid == n - 1 || num[mid+1] != K)            {                lastK = mid;                break;            }            else            {                l = mid + 1;            }        }        else if(K > num[mid])        {            l = mid + 1;        }        else        {            r = mid - 1;        }    }    if(flag == false)        return 0;    return lastK - firstK + 1;}

0 0
原创粉丝点击