剑指Offer37:数字在排序数组中出现的次数

Posted blog-cpc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指Offer37:数字在排序数组中出现的次数相关的知识,希望对你有一定的参考价值。

题目描述

统计一个数字在排序数组中出现的次数。

题解一:循环
 1 public static int GetNumberOfK(int [] array , int k) {
 2         if(array.length==0){
 3             return 0;
 4         }
 5         int count=0;
 6         for(int i=0;i<array.length;i++){
 7             if(array[i]==k){
 8                 count++;
 9             }
10         }
11         return count;
12     }
题解二:二分法
 1 //因为data中都是整数,所以可以稍微变一下,不是搜索k的两个位置,而是搜索k-0.5和k+0.5
 2 //这两个数应该插入的位置,然后相减即可。
 3 public static int GetNumberOfK01(int [] array , int k) {
 4         if(array == null || array.length == 0) {
 5             return 0;
 6         }
 7         return biSearch(array, k + 0.5) - biSearch(array, k - 0.5);
 8     }
 9     private static int biSearch(int [] array, double k){
10         int low = 0, high = array.length - 1;
11         while(low <= high){
12             int mid = low + (high -low) / 2;
13             if(array[mid] > k) {
14                 high = mid - 1;
15             } else{
16                 low = mid + 1;
17             }
18         }
19         return low;
20     }

测试:

1 public static void main(String[] args) {
2         int[] array={3,3,3,3,4,5};
3         int k=3;
4         int numberOfK= GetNumberOfK01(array, k);
5         System.out.println(numberOfK);
6     }
7 输出:4

 

以上是关于剑指Offer37:数字在排序数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章

剑指Offer37:数字在排序数组中出现的次数

剑指offer系列——37.数字在排序数组中出现的次数

剑指Offer37:数字在排序数组中出现的次数(Java)

剑指Offer——数字在排序数组中出现的次数

《剑指Offer——数字在排序数组中出现的次数》代码

剑指offer(二十七)之数字在排序数组中出现的次数