/** *

  • @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; 
    }
}

}