题目:给定一个长度为 n 的非降序数组和一个非负数整数 k ,要求统计 k 在数组中出现的次数。
数据范围:0≤n≤1000,0≤k≤100,数组中每个元素的值满足0≤val≤100
要求:空间复杂度 O(1),时间复杂度 O(logn)
示例1
输入:[1,2,3,3,3,3,4,5],3
返回值:4
示例2
输入:[1,3,4,5],6
返回值:0
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int left = 0;
int right = array.length - 1;
while(left <= right) {
int mid = left + (right - left) / 2;
if(array[mid] > k) {
right = mid - 1;
} else if(array[mid] < k) {
left = mid + 1;
} else if(array[mid] == k) {
right = mid - 1;
}
}
//if(left == array.length || array[left] != k)
// return 0;
int count = 0;
while(left < array.length && array[left] == k){
count++;
left++;
}
return count;
}
}