题目
统计一个数字在排序数组中出现的次数。
思路
两次二分,先找右边界,再找左边界,最后答案就是右-左-1
代码
class Solution {
public:
int search(vector<int>& nums, int target) {
int len = nums.size();
int i = 0;
int j = len - 1;
int m = 0;
while(i <= j){
m = (i + j) / 2;
if(nums[m] < target){
i = m+1;
}else if(nums[m] > target){
j = m-1;
}else{
i = m + 1;
}
}
int right = i;
i = 0;
j = len - 1;
m = 0;
while(i <= j){
m = (i + j) / 2;
if(nums[m] < target){
i = m+1;
}else if(nums[m] > target){
j = m-1;
}else{
j = m - 1;
}
}
int left = j;
return right - left - 1;
}
};