www

导航

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

public class Solution {
  
public int GetNumberOfK(int[] array , int k) {   if(array==null||array.length==0) return 0;   int first=getFirstK(array,k);   int lask=getLastK(array,k);   if(first==-1||lask==-1) return 0;   else return lask-first+1;   }   private int getFirstK(int[] array, int k){   int start=0, end=array.length-1;   while(start<=end){   int mid=(start+end)/2;   if(array[mid]<k){   start=mid+1;   } else if(array[mid]>k){   end=mid-1;   } else if(mid>start&&array[mid-1]==k){   end=mid-1;   } else {   return mid;   }   }   return -1;   }   private int getLastK(int[] array, int k) {   int start=0, end=array.length-1;   while(start<=end){   int mid=(start+end)/2;   if(array[mid]<k){   start=mid+1;   } else if(array[mid]>k){   end=mid-1;   } else if(mid<end&&array[mid+1]==k){   start=mid+1;   } else {   return mid;   }   }   return -1;   } }

 

posted on 2019-03-12 16:08  www_practice  阅读(129)  评论(0编辑  收藏  举报