/** *
- @param data int整型一维数组
- @param dataLen int data数组长度
- @param k int整型
- @return int整型
- C语言声明定义全局变量请加上static,防止重复定义 */
int GetNumberOfK(int* data, int dataLen, int k ) {
// write code here
if(dataLen==0) {
return 0;
} else if(data[dataLen-1]<k||data[0]>k) {
return 0;
} else {
int leftbound,rightbound;
int mid;
int left=0,right=dataLen-1;
if(left==right) {
return k==data[left];
} else {
//寻找下界
while(left<right) {//结束时left==right
mid=(left+right)/2;
if(data[mid]<k) {
left=mid+1;
} else {
right=mid;
}
}
leftbound=left;
//寻找上界
left=0,right=dataLen-1;
while(left<right) {//结束时left==right
mid=(left+right)/2+1;
if(data[mid]>k) {
right=mid-1;
} else {
left=mid;
}
rightbound=right;
}
return rightbound-leftbound+1;
}
}
}