class Solution { public: //二分查找 int bisearch(vector<int>& data, float k) { int left = 0; int right = data.size() - 1; //二分左右界 while (left <= right) { int mid = (left + right) / 2; if (data[mid] < k) left = mid + 1; else if (data[mid] > k) right = mid - 1; } return left; } int GetNumberOfK(vector<int> data, int k) { //分别查找k+0.5和k-0.5应该出现的位置,中间的部分就全是k return bisearch(data, k + 0.5) - bisearch(data, k - 0.5); } };