题解

题目

给定一个长度为n的非降序数组和一个非负数整数k,要求统计k在数组中出现的次数 数据范围:0≤n≤1000 , 0≤k≤1000,数组中每个元素的值满足0≤val≤1000

要求:空间复杂度 O(1)O(1),时间复杂度 O(logn)O(logn)

思路

首先是判断数组是否为空,k是否小于0以及k是否大于数组的最后一个数,满足三者其中一个,都直接返回0;不满足则遍历这个数据,一旦数组某个元素等于k,则num自增,一旦数组某个元素大于k,直接break,跳出循环,因为这个数组有个特性是它是非降序数组,结果就是num。

代码

public class Solution {
    public int GetNumberOfK(int [] array , int k) {
        int len = array.length; 
        int num =0;
        if(len <= 0 || k<0 || k>array[len-1]){
            return num;
        }else{
            for(int i=0;i<len;i++){
                if(array[i] == k){
                    num++;
                }else if(array[i]>k){
                    break;
                }
            }
            return num;
        }
    }
}