《剑指offer》JZ37数字在排序数组中出现的次数

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

解析:

有两种方法:

①暴力遍历

②二分查找:也分两类吧:一类是直接使用binarySearch;一类是编写一个二分查找:

代码:

方法一:(自己写的哟)

/*
        int count = 0;
        for(int i = 0; i < array.length; i++){
            if(array[i] == k){
                count++;
            }
        }
        return count;
        */

 

方法二:

//二分查找
        int count = 0;
        int low = 0;
        int hight = array.length - 1;
        while(low <= hight){
            int mid = low + (hight - low) / 2;
            if(array[mid] < k){
                low = mid + 1;
            }else if(array[mid] > k){
                hight = mid - 1;
            }else{
                count++;
                int index = mid + 1;
                while(index < array.length && array[index] == k){
                    count++;
                    index++;
                }
                index = mid - 1;
                while(index >= 0 && array[index] == k){
                    count++;
                    index--;
                }
                break;
            }
        }
        return count;

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