38. 数字在排序数组中出现的次数
题目描述
统计一个数字在排序数组中出现的次数。
思路:
先用二分法找到这个数字,然后分别从这个位置往前计数, 往后计数
1 import java.util.Arrays; 2 public class Solution { 3 public int GetNumberOfK(int [] array , int k) { 4 if(array == null || array.length == 0) 5 return 0; 6 // 先用二分法找到这个数字 7 int index = Arrays.binarySearch(array, k); 8 if(index < 0){ // 如果没找这个数,则index 小于0 9 return 0; 10 } 11 12 // 然后分别从这个位置往前计数, 往后计数 13 int cnt = 1; 14 for(int i = index - 1; i >= 0; i--){ 15 if(array[i] == k) 16 cnt++; 17 } 18 19 for(int i = index + 1; i < array.length; i++){ 20 if(array[i] == k) 21 cnt++; 22 } 23 return cnt; 24 } 25 }