题目描述:统计一个数字在排序数组中出现的次数。
可以根据二分查找,查找给定元素第一次出现的位置,往后继续查找值是否相等,寻找出现次数。
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int low = 0;
int high = array.length - 1;
int index = 0;
int mid = 0;
int count=0;
while (low <= high) {
mid = low + (high - low) / 2;
if (k < array[mid])
high = mid - 1;
else if (k > array[mid])
low = mid + 1;
else {
index = mid;
high = mid - 1;
}
}
for(int i=index;i<array.length;i++){
if(k==array[i]){
count++;
}else{
break;
}
}
return count;
}
}