题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
https://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
C语言
/** * * @param data int整型一维数组 * @param dataLen int data数组长度 * @param k int整型 * @return int整型 */ int GetNumberOfK(int* data, int dataLen, int k ) { // write code here int l = 0; int r = dataLen - 1; int cur; if(!dataLen) return 0; while(l <= r){ //先通过二分查找到目标k其中所在的位置 cur = l + (r-l)/2; if(data[cur] < k){ l = cur+1; }else if(data[cur] > k){ r = cur-1; }else{ //找到k l = cur, r = cur; //此时利用lr来寻找k的左右边界 while(l-1 >= 0 && data[l-1] == k)l--; while(r+1 < dataLen && data[r+1] == k)r++; return r-l+1; //返回k的数量 } } return 0; }