Input:
nums = 1, 2, 3, 3, 3, 3, 4, 6
K = 3
Output:
4
首先是排序数组,需要找到这个数字,可以使用二分查找。
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[] array,int k){
int l=0,h=array.length-1;
while(l<=h){
int m=(l+h)/2;
if(array[m]>=k){
h=m-1;
}else{
l=m+1;
}
}
return l;
}
}
二分查找的部分,可以为int l=0,h=array.length,然后while里面是l<h,h=m,不是m-1;