统计一个数字在升序数组中出现的次数。

方法1:暴力查找统计

class Solution {
public:
    int GetNumberOfK(vector<int> data ,int k) {
        int res=0;
        for(auto val:data)
        {
            if(val==k)
                res++;	 	
        }   
        return res;
    }
};

方法2:二分查找

int GetNumberOfK(vector<int> data ,int k) 
{
	int len=data.size();
	int left=0,right=len-1;
	int mid=(left+right)/2;
	while(mid>=0&&mid<len&&left<=right)//left<=right取等号情况是在只有一个数时 
	{
		if(data[mid]>k)
		{
			right=mid-1;
			mid=(left+right)/2;
		}
		else if(data[mid]<k)
		{
			left=mid+1;
			mid=(left+right)/2;
		}	
		else
		{
			left=mid-1;
			right=mid+1;
			break;
		}
	}
	if(left>right)
	{
		return 0;//加判断是因为,有可能不存在要查的数 
	}
	
	while(data[left]==k)
	{
		left--;
	}
	while(data[right]==k)
	{
		right++;
	}
	
	return (right-left-1);		        
}