题解 | #数字在升序数组中出现的次数#
数字在升序数组中出现的次数
http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2
题解
题目
给定一个长度为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;
}
}
}