JZ37 剑指offer 数字在升序数组中出现的次数
作者:互联网
第37题 数字在升序数组中出现的次数
题目描述
统计一个数字在升序数组中出现的次数。
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int lb = 0, rb = 0;
int l = 0, r = data.size();
while(l<r){
int mid = l + (r-l)/2;
if(data[mid]< k) l=mid+1;
else r = mid;
}
lb = l;
l = 0, r = data.size();
while(l<r){
int mid = l + (r-l)/2;
if(data[mid]<=k) l=mid+1;
else r = mid;
}
rb = l;
return rb-lb;
}
};
思路:
利用二分查找出该数的左右边界,找左边界时候,如果mid值小于k,左指针移到mid+1处,如果mid值大于等于k,右指针移到mid处。
找右边界(第一个大于k的位置)的时候,如果mid值小于等于k,左指针移到mid+1,如果mid值大于k,右指针移到mid处。
标签:移到,offer,int,mid,JZ37,升序,data,指针 来源: https://blog.csdn.net/KazeHelloWorld/article/details/112803589