统计一个数字在排序数组中出现的次数。
示例 1:
输入: nums = [5,7,7,8,8,10], target = 8 输出: 2
示例 2:
输入: nums = [5,7,7,8,8,10], target = 6 输出: 0
限制:
0 <= 数组长度 <= 50000
审题:
1、输入为有序数组,从小到大排序
2、查找target给出数字在数组中出现的次数
3、数组长度[0,50000]
思路:
1、暴力破解
2、有序数组可以使用二分法
int search(int* nums, int numsSize, int target){
int left = 0;
int right = numsSize;
int count = 0;
// 二分法查找出来出第一出现的target的索引
while (left < right) {
int mid = (left + right) / 2;
if (nums[mid] >= target) {
right = mid;
} else {
left = mid + 1;
}
}
while (left < numsSize && nums[left++] == target) {
count++;
}
return count;
}