1 public class Solution { 2 public int GetNumberOfK(int [] array , int k) { 3 if(array.length == 0) { 4 return 0; 5 } 6 int result = 0; 7 for(int i = 0; i < array.length; i ++) { 8 if(array[i] == k) { 9 result ++; 10 } 11 } 12 return result; 13 } 14 }
1 public class Solution { 2 public int GetNumberOfK(int[] array , int k) { 3 int index = binarySearch(array, k); 4 if(index < 0) { 5 return 0; 6 } 7 int count = 1; 8 for(int i = index + 1; i < array.length && array[i] == k; i++) { 9 count++; 10 } 11 for(int i = index - 1; i >= 0 && array[i] == k; i --) { 12 count++; 13 } 14 return count; 15 } 16 17 private int binarySearch(int[] array, int target) { 18 int left = 0; 19 int right = array.length - 1; 20 while(left <= right) { 21 int middle = (left + right) / 2; 22 if(array[middle] == target) { 23 return middle; 24 } 25 if(array[middle] > target) { 26 right = middle - 1; 27 } 28 if(array[middle] < target) { 29 left = middle + 1; 30 } 31 } 32 return -1; 33 } 34 }
原文:https://www.cnblogs.com/StringBuilder/p/14766668.html