[剑指Offer][数组]数字在升序数组中出现的次数

Posted StringBuilder

tags:

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

题目描述

统计一个数字在升序数组中出现的次数。
 
 1 public class Solution {
 2     public int GetNumberOfK(int [] array , int k) {
 3        if(array.length == 0) {
 4            return 0;
 5        }
 6        int result = 0;
 7        for(int i = 0; i < array.length; i ++) {
 8            if(array[i] == k) {
 9                result ++;
10            }
11        }
12        return result;
13     }
14 }
 1 public class Solution {
 2     public int GetNumberOfK(int[] array , int k) {
 3        int index = binarySearch(array, k);
 4         if(index < 0) {
 5             return 0;
 6         }
 7         int count = 1;
 8         for(int i = index + 1; i < array.length && array[i] == k; i++) {
 9             count++;
10         }
11         for(int i = index - 1; i >= 0 && array[i] == k; i --) {
12             count++;
13         }
14         return count;
15     }
16     
17     private int binarySearch(int[] array, int target) {
18         int left = 0;
19         int right = array.length - 1;
20         while(left <= right) {
21             int middle = (left + right) / 2;
22             if(array[middle] == target) {
23                 return middle;
24             }
25             if(array[middle] > target) {
26                 right = middle - 1;
27             }
28             if(array[middle] < target) {
29                 left = middle + 1;
30             }
31         }
32         return -1;
33     }
34 }

 

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

剑指offer(C++)-JZ53:数字在升序数组中出现的次数(算法-搜索算法)

剑指offer(C++)-JZ53:数字在升序数组中出现的次数(算法-搜索算法)

《剑指offer》JZ31 ~ JZ40

《剑指offer》JZ31 ~ JZ40

《剑指offer》JZ31 ~ JZ40

《剑指offer》JZ31 ~ JZ40