-
题目描述
统计一个数字在排序数组中出现的次数。 -
解题思路
(1)直接遍历完事。
(2)二分查找 -
代码实现
(1)
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int len = array.length;
if(len < 1)
return 0;
int count =0;
for(int i =0 ; i < len ; i++){
if(k==array[i])
count++;
}
return count;
}
}
(2)
public class Solution {
public int GetNumberOfK(int [] array , int k) {
int first = binarySearch(array,k);
int last = binarySearch(array,k+1);
return (first == array.length || array[first] != k) ? 0 : last - first;
}
private int binarySearch(int[] nums , int k){
int left = 0;
int right = nums.length;
while(left < right){
int m = left + (right -left) / 2;
if(nums[m] >= k)
right = m;
else
left = m + 1;
}
return left;
}
}