【剑指offer】题38:字数在数组中出现的次数

来源:互联网 发布:大数据的定义和特点 编辑:程序博客网 时间:2024/06/15 17:21

二分查找
上界
下界


int GetLowBound(vector<int>& data, int left, int right, int k){    while (left+1<right)    {        int mid = left + ((right - left) >> 1);        if (data[mid]>=k)        {            right = mid;        }        else        {            left = mid;        }    }    if (data[left] == k)    {        return left;    }    else if (data[right] == k)    {        return right;    }    else    {        return -1;    }}int GetHighBound(vector<int>& data, int left, int right, int k){    while (left + 1 < right)    {        int mid = left + ((right - left) >> 1);        if (data[mid] > k)        {            right = mid;        }        else        {            left = mid;        }    }    if (data[right] == k)    {        return right;    }    else if (data[left] == k)    {        return left;    }    else    {        return -1;    }}int GetNumberOfK(vector<int>& data, int k){    if (data.size()==0)    {        return 0;    }    int left = GetLowBound(data, 0, data.size() - 1, k);    int right = GetHighBound(data, 0, data.size() - 1, k);    if (left == -1)    {        return 0;    }    return right - left + 1;}

阅读全文
0 0
原创粉丝点击