题目描述:
统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
限制:
0 <= 数组长度 <= 50000
作者:Krahets
链接:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/5874p1/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
解答:
int search(int* nums, int numsSize, int target){
int i = 0;
int j = numsSize - 1;
int m = 0;
int left = 0;
int right = 0;
//寻找右边界
while(i <= j){
m = (i + j)/2;
if(nums[m] <= target){
i = m + 1;
}
else{
j = m - 1;
}
}
right = i;
//寻找左边界
i = 0; j = numsSize - 1;
while(i <= j){
m = (i + j)/2;
if(nums[m] < target){
i = m + 1;
}
else{
j = m - 1;
}
}
left = j;
return right - left - 1;
}
运行结果: