当前位置 博文首页 > Inmaturity_7的博客:算法练习帖--74--在排序数组中查找数字 I(
统计一个数字在排序数组中出现的次数。
(题目来源:力扣(LeetCode))
示例 1
输入: nums = [5,7,7,8,8,10], target = 8
输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6
输出: 0
限制:
0 <= 数组长度 <= 50000
int search(int* nums, int numsSize, int target){
int low=0,high=numsSize-1,mid,count=0;
//二分查找
while(low<=high){
mid=(low+high)/2;
if(nums[mid]==target){
high=mid;
break;
}else if(nums[mid]>target){
high=mid-1;
}else{
low=mid+1;
}
}
if(high<0){//防止数组越界
return 0;
}
//向后搜索
for(int i=high;i<numsSize;i++){
if(nums[i]==target){
++count;
}else{
break;
}
}
//向前搜索
for(int i=high-1;i>=0;i--){
if(nums[i]==target){
++count;
}else{
break;
}
}
return count;
}
cs