题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
/**
*
* @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
int iL = 0;
int iR = 0;
int iMid = 0;
int iTimes = 0;
int iLSite = 0;
int iRSite = 0;
if (NULL == data || 0 == dataLen)
return 0;
if (k < data[0] || k > data[dataLen - 1])
return 0;
iL = 0;
iR = dataLen;
while (iL < iR)
{
iMid = iL + (iR - iL) / 2;
if (data[iMid] < k)
{
iL = iMid + 1;
}
else{
iR = iMid;
}
}
iLSite = iR;//左边界
iL = 0;
iR = dataLen;
while (iL < iR)
{
iMid = iL + (iR - iL) / 2;
if (data[iMid] > k)
{
iR = iMid;
}
else{
iL = iMid + 1;
}
}
iRSite = iR;//右边界
iTimes = iRSite - iLSite;
return iTimes;
}