题目链接
题目描述
统计一个数字在排序数组中出现的次数。
示例
输入: nums = [5,7,7,8,8,10], target = 8输出: 2输入: nums = [5,7,7,8,8,10], target = 6输出: 0
解题思路
二分查找
bin_search(int A[],int n,int key){int low,high,mid;low = 0;high = n-1;while(low<=high){mid =(low + high)/2;if(A[mid]==key)return mid;if(A[mid]<key){low =mid + 1;}if(A[mid]>key){high= mid - 1;}}return -1;}
class Solution {public:int search(vector<int>& nums, int target) {if(nums.empty())return 0;int len = nums.size()-1;if(nums[0]>target||nums[len]<target)return 0;return firstIndex(nums,target+1,len) - firstIndex(nums,target,len);}int firstIndex(vector<int>& nums, int target, int len){int left = 0,right = len;while(left<=right){int mid = left + (right-left)/2;if(nums[mid] >= target){right = right - 1;}else{left = mid + 1;}}return left;}};
- 时间复杂度:O(logN)
- 空间复杂度:**O(1)**
