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

1、题目描述

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

2、代码实现

package com.baozi.offer;

/**
 * 统计一个数字在排序数组中出现的次数。
 *
 * @author BaoZi
 * @create 2019-07-14-8:52
 */
public class Offer26 {
    public static void main(String[] args) {
        Offer26 offer26 = new Offer26();
        int[] array = new int[]{1, 2, 3, 4, 4, 4, 4, 4, 5, 6, 7, 8, 9};
        int number = offer26.GetNumberOfK(array, 1);
        System.out.println(number);
    }

    public int GetNumberOfK(int[] array, int k) {
        if (array.length == 0 || array == null) {
            return 0;
        }
        return get(array, k, 0, array.length - 1);
    }

    private int get(int[] array, int k, int begin, int end) {
        if (begin > end) {
            return 0;
        }
        int mid = (begin + end) >> 1;
        if (k > array[mid]) {
            return get(array, k, mid + 1, end);
        } else if (k < array[mid]) {
            return get(array, k, begin, mid - 1);
        } else {
            return get(array, k, begin, mid - 1) + get(array, k, mid + 1, end) + 1;
        }
    }
}

  

posted @ 2019-07-14 09:08  包子的百草园  阅读(145)  评论(0编辑  收藏  举报