题目描述:给你一个排序了的数组 和一个数 找出这个数在这个数组中出现的次数
思路:若直接循环遍历的话 复杂度为O(n) 但因为是排好序的 所以直接用二分查找 找到这个数出现的起始位置,然后相减 就可以得到他出现的次数了 时间复杂度为logn
java程序:
public class Solution {
public int GetNumberOfK(int [] array , int k) {
return binSearch(array,k+0.5) - binSearch(array,k-0.5);
}
public int binSearch(int[] array,double k){
int head=0;
int end = array.length-1;
int mid = 0;
int count=0;
while(head<=end){
mid = (end-head)/2 + head;
if(array[mid]>k){
end = mid -1;
}else if(array[mid]<k){
head = mid +1;
}
}
return head;
}
}