题目链接:https://leetcode-cn.com/problems/zai-pai-xu-shu-zu-zhong-cha-zhao-shu-zi-lcof/
题目如下:
class Solution {
public:
int search(vector<int>& nums, int target) {
//思路:二分法,找到一个数字之后,使用双指针向两边扩展,时间复杂度为O(logn)
int size=nums.size();
if(size==0) return 0;
int low=0,high=size-1,mid;//注意点size-1
int left=-1,right;
while(low<=high){//注意点<=
mid=(low+high)/2;
if(target>nums[mid]) low=mid+1;
else if(target<nums[mid]) high=mid-1;
else {left=right=mid;break;}//target==nums[mid]
}
if(left!=-1){
while(left>=0){
if(left-1>=0&&nums[left]==nums[left-1]) left--;
else break;
}
while(right<size){
if(right+1<size&&nums[right]==nums[right+1]) right++;
else break;
}
return right-left+1;
}
else return 0;
}
};