38 数字在排序数组中出现的次数

来源:互联网 发布:日照间距算法 编辑:程序博客网 时间:2024/06/05 11:18

描述:


实现代码:

package question38;public class NumberOfK {static int GetNumberOfK(int data[],int length,int k){int number=0;if (data.length!=0&&data!=null) {int first=GetFirstK(data,length,k,0,length-1);int last=GetLastK(data,length,k,0,length-1);if (first>-1&&last>-1) {number=last-first+1;}}return number;}private static int GetLastK(int[] data, int length, int k, int start, int end) {// TODO Auto-generated method stubif (start>end) {return -1;}int mid=((end-start)>>1)+start;int midData=data[mid];if (midData==k) {if( (mid<length-1&&data[mid+1]!=k) ||mid==length-1){return mid;}else  {start=mid+1;}}else if (mid<k) {start=mid+1;}else {end=mid-1;}return GetLastK(data, length, k, start, end);}private static int GetFirstK(int[] data, int length, int k, int start, int end) {// TODO Auto-generated method stubif (start>end) {return -1;}int mid=((end-start)>>1)+start;int midData=data[mid];if (midData==k) {if( (mid>0&&data[mid-1]!=k )|| mid==0 ){return mid;}else {end=mid-1;}}else if (midData>k) {end=mid-1;}else {start=mid+1;}return GetFirstK(data, length, k, start, end);}public static void main(String[] args) {// TODO Auto-generated method stubint array[]={1,3,3,3,3,4,5};int array2[]={1,2,3,3,3,3,4,5};int res=GetNumberOfK(array, array.length,6);int res2=GetNumberOfK(array, array.length,3);System.out.println(res);System.out.println(res2);}}

测试结果:


0 0