剑指offer-37-数字在排序数组中出现的次数(二分查找) -- Java实现

题目

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

分析

思路一:

代码:

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        int low = 0;
        int high = array.length - 1;
        int mid = low + (high - low) / 2;
        int numK = 0;
        while(low <= high) {
            mid = low + (high - low) / 2;
            if(array[mid] == k) {
                numK++;
                int midR = mid + 1;
                int midL = mid - 1;
                while(midR <= array.length - 1 && array[midR] == k) {
                    numK++;
                    midR++;
                }
                while(midL >= 0 && array[midL] == k) {
                    numK++;
                    midL--;
                }
                return numK;
            } else if(array[mid] > k) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
        
        return numK;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42054926/article/details/106047682