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

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

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

/**
 * 
 * @param data int整型一维数组 
 * @param dataLen int data数组长度
 * @param k int整型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */


int GetNumberOfK(int* data, int dataLen, int k ) {
    // write code here
    int iL = 0;
    int iR = 0;
    int iMid = 0;
    int iTimes = 0;
    int iLSite = 0;
    int iRSite = 0;
    
    if (NULL == data || 0 == dataLen)
        return 0;
    
    if (k < data[0] || k > data[dataLen - 1])
        return 0;
    iL = 0;
    iR = dataLen;
    while (iL < iR)
    {
        iMid = iL + (iR - iL) / 2;
        if (data[iMid] < k)
        {
            iL = iMid + 1;
        }
        else{
            iR = iMid;
        }
    }
    iLSite = iR;//左边界
    iL = 0;
    iR = dataLen;
    while (iL < iR)
    {
        iMid = iL + (iR - iL) / 2;
        if (data[iMid] > k)
        {
            iR = iMid;
        }
        else{
            iL = iMid + 1;
        }
    }
    iRSite = iR;//右边界
    iTimes = iRSite - iLSite;
    return iTimes;
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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