【题目】
统计一个数字在升序数组中出现的次数。
【思路】
二分查找
【代码】
Java:
public class Solution {
public int GetNumberOfK(int[] array, int k) {
int length = array.length;
if(length == 0){
return 0;
}
int l = 0, r = length - 1, index = -1, mid;
while (l <= r) {
mid = (l + r) / 2;
if (k > array[mid]) {
l = mid + 1;
} else if (k < array[mid]) {
r = mid - 1;
} else {
index = mid;
break;
}
}
if(index == -1){
return 0;
}
int x = index, y = index;
while (x - 1 >= 0 && array[x - 1] == k) x--;
while (y + 1 < length && array[y + 1] == k) y++;
return y - x + 1;
}
}