统计一个数字在排序数组中出现的次数。
public class Solution {
public int GetNumberOfK(int [] array , int k) {
//求插入k-0.5与k+0.5插入到array位置的差
return insert(array,k+0.5)-insert(array,k-0.5);
}
//编写插入函数
private int insert(int [] array,double num){
int left=0,right=array.length-1;
//二分法查找num要插入的位置
while(left<=right){
//!!!!!!!!!!!!!!!为何原作者要+left?
int mid=(right-left)/2+left;
//中间值小于num,更新left
if(array[mid]<num)
left=mid+1;
//中间值大于num,更新right
else if(array[mid]>num)
right=mid-1;
}
return left;
}
}

京公网安备 11010502036488号