二分法+数组下标区间
数字在升序数组中出现的次数
http://www.nowcoder.com/questionTerminal/70610bf967994b22bb1c26f9ae901fa2
public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length==0) return 0; int res=BinSearch(array,k); if(res==-1) return 0; int low=res-1; int hight=res+1; while(low>-1 && array[res]==array[low] ){ low--; } while(hight <array.length && array[res]==array[hight]){ hight++; } return hight-low -1; } public int BinSearch(int[] arr, int k){ //二分法查找出一个元素的数组下标 int low=0; int hight=arr.length-1; while(low<=hight){ int mid=(low+hight)/2; if(arr[mid]==k) { return mid; }else if(arr[mid]>k){ hight=mid -1; }else{ low=mid+1; } } return -1; //找不到 } }