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

来源:互联网 发布:mac口红免税店价格 编辑:程序博客网 时间:2024/06/13 11:30

统计一个数字在排序数组中出现的次数 。【采用二分查找的变体】


class Solution {public:    // Again!!!!        int getLeftC(vector<int> a,int len, int left, int right, int k){int mid;while (left <= right){mid = left + (right - left) / 2;if (a[mid] == k){if (mid == 0 || mid - 1 >= 0 && a[mid - 1] != k)return mid;else{right = mid - 1;}}else if (a[mid] > k){right = mid - 1;}else{left = mid + 1;}}    return -1;}int getRightC(vector<int> a,int len, int left, int right, int k){int mid;while (left <= right){mid = left + (right - left) / 2;if (a[mid] == k){if (mid ==len-1  || mid + 1 <=len-1 && a[mid + 1] != k)return mid;else{left = mid + 1;}}else if (a[mid] > k){right = mid - 1;}else{left = mid + 1;}}    return -1;}    int GetNumberOfK(vector<int> data ,int k) {        int len=data.size();        if(len<=0)            return 0;        int c1=getLeftC(data,len,0,len-1,k);        int c2=getRightC(data,len,0,len-1,k);        if(c1==-1 || c2==-1)            return 0;        return c2-c1+1;            }};


0 0
原创粉丝点击