public int GetNumberOfK(int[] array , int k) {
if (array == null || array.length == 0) return 0;
int lo = 0, hi = array.length-1;
int index = -1;
int times = 0;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (array[mid] > k) hi = mid - 1;
else if (array[mid] < k) lo = mid + 1;
else {
index = mid;
break;
}
}
if (index == -1) return 0;
for (int i = index; i >= 0 && array[i] == k ; i--) {
times++;
}
for (int i = index+1; i < array.length && array[i] == k; i++) {
times++;
}
return times;
}
public int GetNumberOfK(int[] array , int k) {
if (array == null || array.length == 0) return 0;
return GetNumberOfKSub(array, k+0.5) - GetNumberOfKSub(array, k-0.5);
}
private int GetNumberOfKSub(int[] a, double num) {
int lo = 0, hi = a.length-1;
while (lo <= hi) {
int mid = lo + (hi - lo) / 2;
if (a[mid] < num) lo = mid + 1;
else if (a[mid] > num) hi = mid - 1;
}
//return hi; 都可以
return lo;
}
数字在排序数组中出现的次数
最新推荐文章于 2022-01-06 17:14:33 发布