统计一个数字在排序数组中出现的次数。
方法
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if(array==null || array.length<=0)
return 0;
int index=findIndex(array,k);
if(index==-1)
return 0;
int left=0,right=0,i=index,j=index;
while(i>=0){
if(array[i]==k){
left++;
i=i-1;
}
else{
break;
}
}
while(j<=array.length-1){
if(array[j]==k){
right++;
j=j+1;
}else{
break;
}
}
return left+right-1;
}
public int findIndex(int[] array,int k){
int low=0,high=array.length-1;
while(low<=high){
int mid=(low+high)/2;
if(array[mid]==k){
return mid;
}else if(array[mid]>k){
high=mid-1;
}else{
low=mid+1;
}
}
return -1;
}
}