统计一个数字在排序数组中出现的次数。
解题思路:
二分查找
public class Solution {
public int GetNumberOfK(int [] array , int k) {
return binarySearch(array,k,0,array.length-1);
}
public int binarySearch(int[] array,int k,int start,int end){
int mid = (start + end) / 2;
if(start > end){
return 0;
}
if(k > array[mid]){
return binarySearch(array,k,mid+1,end);
}else if(k < array[mid]){
return binarySearch(array,k,0,mid-1);
}else{
int cnt = 1;
int temp = mid - 1;
while(temp >= 0 && array[temp] == k){
cnt++;
temp--;
}
temp = mid + 1;
while(temp < array.length && array[temp] == k){
cnt++;
temp++;
}
return cnt;
}
}
}