剑指offer之 数字在排序数组中出现的次数(Java实现)

数字在排序数组中出现的次数

NowCoder

题目描述:

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

解题思路:

public class Solution{
    public int GetNumberOfK(int [] array,int k){
        if (array.length == 0)  return 0;
        int left = 0;
        int right = array.length -1;
        int index = 0;
        //二分法
        while (left < right){
            int mid = (left + right )/2;
            if (k == array[mid]){
                index = mid;
                break;
            }else if (array[left] < array[mid]){
                left = mid + 1;
            }else{
                right = mid - 1;
            }
        }
        //遍历查找所有的K
        int count = 0;
        for (int i = index;i >= 0 && array[i]  == k;i --)
            count ++;
        for(int i = index +1; i < array.length && array[i] == k ; i ++) 
            count ++;
        return count;
    }
}

你可能感兴趣的:(剑指offer)