思路1:使用for循环依次遍历计数
思路2:使用二分法,确定数字在数组中的下界与上界
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int sum=0;
for(int i=0;i<data.size();i++)
{
if(data[i]==k)
sum++;
}
return sum;
}
};
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
int left1=0;
int right1=data.size()-1;
while(left1<=right1)
{
int mid=left1+((right1-left1)>>1);
if(data[mid]<k)//left1确保下界
left1=mid+1;
else
right1=mid-1;
}
int left2=0;
int right2=data.size()-1;
while(left2<=right2)
{
int mid=left2+((right2-left2)>>1);
if(data[mid]<=k)
left2=mid+1;
else
right2=mid-1;
}
return right2-left1+1;
}
};