思路1:map;需要遍历一遍 可能会超时;
思路2:排序数组,体现出二分查找的优势;
查找 k-0.5 k+0.5 应该插入的位置;
两者相减就是;
class Solution {
public:
int findPos(vector<int>data,int left,int right,double k)
{
while(left<=right)
{
int mid=(right-left)/2+left;
if(data[mid]>k)
right=mid-1;
else if(data[mid]<k)
left=mid+1;
}
return left;
}
int GetNumberOfK(vector<int> data ,int k)
{
int n=data.size();
if(n==0)return 0;
return findPos(data,0,n-1,k+0.5)-findPos(data,0,n-1,k-0.5);
}
};