统计一个数字在排序数组中出现的次数。
//方案一
public class Solution {
public int GetNumberOfK(int [] array , int k) {
return two(array,k+0.5)-two(array,k-0.5);
}
public int two(int a[],double k){
int low = 0;
int end = a.length-1;
int mid;
while(low<=end){
mid = (end-low)/2+low;
if(a[mid]<k)
low=mid+1;
else if(a[mid]>k)
end=mid-1;
}
return low;
}
}
//方案二
public class Solution {
public int GetNumberOfK(int [] array , int k) {
return f1(array,k)-f(array,k)+1;
}
public int f(int a[],int k){
int start=0;
int end = a.length-1;
int mid = (start+end)/2;
while(start<=end){
if(a[mid]<k)
start=mid+1;
else
end=mid-1;
mid = (start+end)/2;
}
return start;
}
public int f1(int a[],int k){
int start=0;
int end = a.length-1;
int mid = (start+end)/2;
while(start<=end){
if(a[mid]<=k)
start=mid+1;
else
end=mid-1;
mid = (start+end)/2;
}
return end;
}
}