统计一个数字在排序数组中出现的次数
思路:
排序数组,如果出现多个相同数字,则这些数字都在一起,找到第一个和最后一个数字就可以得出次数
代码:
class Solution {
public:
int search(vector<int>& nums, int target, bool leftBegin) {
int left = 0, right = nums.size()-1,ans = nums.size();
while(left <= right) {
int mid = left + (right-left)/2;
if(nums[mid] > target || (leftBegin && nums[mid] == target)) {
right = mid - 1;
ans = mid;
}
else {
left = mid + 1;
}
}
return ans;
}
int search(vector<int>& nums, int target) {
int left = search(nums,target,true);
int right = search(nums,target,false) - 1;
if(left <=right && right < nums.size() && nums[left] == target && nums[right] == target) {
return right - left +1;
}
return 0;
}
};