剑指offer 38. 数字在排序数组中出现的次数

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 }    
原文地址:https://www.cnblogs.com/hi3254014978/p/12595324.html