public class { public int GetNumberOfK(int [] array , int k) { if(array == null || array.length == 0){ return 0; } int lo = 0; int hi = array.length-1; int mid = 0; int cnt = 0; while(lo <= hi){ mid = (hi + lo) >> 1; if(array[mid] < k){ lo = mid + 1; } else if(array[mid] > k){ hi = mid - 1; } else{ cnt = 1; break; } } if(cnt == 0){ return 0; } int i = mid - 1; int j = mid + 1; while(i >= 0 && array[i--] == k) { ++cnt; } while(j < array.length && array[j++] == k) { ++cnt; } return cnt; } }
|
近期评论