/*
思路:
数组有序马上想到用二分查找。
用二分查找找到最前面元素和最后面元素的角标i,j。
结果就是:j-i+1。
*/
class Solution {
public:
int GetNumberOfK(vector<int> data ,int k) {
if(data.size()==0)
return 0;
int number = 0;
int first = GetFirstIndex(data,k,0,data.size()-1);
int last = GetLastIndex(data,k,0,data.size()-1);
if(first>-1 && last>-1)
number = last - first + 1;
return number;
}
int GetFirstIndex(vector<int> data,int k,int start,int end){
if(start > end)
return -1;
int mid = (start + end)/2;
if(data[mid] == k){
if(mid == start || data[mid-1] != k)
return mid;
else
end = mid - 1;
}else if(data[mid] > k)
end = mid - 1;