int GetNumberOfK(int* nums, int numsLen, int k ) {
    if(nums[0]>k||nums[numsLen-1]<k)
        return 0;//不包含k
    if(numsLen==0)
        return 0;//数组为空
  
    int min=0,max=0;
    int left=0;
    int right=numsLen-1;

    //判断最后一个数是否为k
    //因为需要找k后面的数
    if (nums[numsLen-1] == k)
    {
        max=numsLen;
    }

    //找k前一个数,这里不用判断是因为min=0
    //找不到的话min也为0.不影响结果
    while(left<=right)
    {
        int mid=(left+right)/2;
        if(nums[mid]<k)
            left=mid+1;
        else
            right=mid;
        if(left==right)
        {min=left;
        break;}
    }

    //max不为0代表最后一个数字为k
    if (max != 0)
    {
        return max - min;
    }
  
    right=numsLen-1;
    //找k后一个数
    while(left<=right)
    {
        int mid=(left+right)/2;
        if(nums[mid]<k+1)
            left=mid+1;
        else
            right=mid;
        if(left==right)
        {max=left;
        break;}
    }

    //判断是否找到
    if((max-min)==0)
    {
        return 0;
    }
    return max-min;
}