思路:
二分查找,
中间值比要查找数值大,左部分查找
中间值比要查找数组小,有部分查找
中间值等于要查找的数,左部分查找第一次出现,右部分查找最后一次出现
import java.util.*;
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int result=0;
int mid=array.length/2;
if(array==null || array.length==0)
return 0;
if(array.length==1)
{
if(array[0]==k)
return 1;
else
return 0;
}
if(k<array[mid])
{
result+=GetNumberOfK(Arrays.copyOfRange(array,0,mid),k);//左取得到,右取不到
}
else{
if(k>array[mid])
result+=GetNumberOfK(Arrays.copyOfRange(array,mid,array.length),k);
else{
for(int j=mid-1;j>=0;j--)
{
if(array[j]==k)
result++;
else
break;
}
for(int j=mid;j<array.length;j++)
{
if(array[j]==k)
result++;
else
break;
}
}
}
return result;
}
}