思路
二分查找
找到值之后向两边扩展,找相同的值
public class Solution { public int GetNumberOfK(int [] array , int k) { //二分判断是否有k int l=0,r=array.length-1; while(l<=r){ int mid=(l+r)>>1; if(array[mid]<k){ l=mid+1; }else if(array[mid]>k){ r=mid-1; }else{ l=mid; r=mid; break; } } // l!=r说明没有找到k if(l!=r){ return 0; } int cnt=-1; while(l>=0&&array[l]==k){ l--; cnt++; } while(r<=array.length-1 && array[r]==k){ r++; cnt++; } return cnt; } }