码迷,mamicode.com
首页 > 编程语言 > 详细

【剑指Offer】37:数字在排序数组中出现的次数

时间:2020-03-08 17:40:14      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:print   col   ||   数字   位置   offer   else   ++   double   

题目描述

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

题解一:循环
 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

 

【剑指Offer】37:数字在排序数组中出现的次数

标签:print   col   ||   数字   位置   offer   else   ++   double   

原文地址:https://www.cnblogs.com/Blog-cpc/p/12443249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!