剑指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:数字在排序数组中出现的次数的主要内容,如果未能解决你的问题,请参考以下文章