题目描述
统计一个数字在升序数组中出现的次数。
憨批菜鸡写法:
public class Solution {
public int GetNumberOfK(int [] array , int k) {
if (array.length==0||array==null){
return 0;
}
int index = loca(array,0,array.length-1,k);
int res =0;
if (index!=0||array[0]==k){
res = findAllNum(array,index,k);
}
return res;
}
public static int loca(int [] array , int start,int end, int k){
if (start>end){
return 0;
}
int mid = (start+end)/2;
if (k< array[mid]){
return loca(array,start,mid-1,k);
}else if (k>array[mid]){
return loca(array,mid+1,end,k);
}else {
return mid;
}
}
public static int findAllNum(int [] array , int index,int k){
int res =1;
for (int i =index-1;i>=0;i--){
if (array[i]==k){
res++;
}else{
break;
}
}
for (int j =index+1;j<array.length;j++){
if (array[j]==k){
res++;
}else{
break;
}
}
return res;
}
}