剑指offer-数字在排序数组中出现的次数
标签:
JavaScript
统计一个数字在排序数组中出现的次数。既然是有序数组,采用二分查找的思路,先找到目标值所在位置,然后遍历目标值左右的数字,统计目标值出现的次数。
function GetNumberOfK(data, k)
{
// write code here
if(data.length==0) return 0;
//由于数组是有序的 所以利用二分查找
var left=0;
var right=data.length-1;
var count=0;
var mid;
while(left<=right){
mid=Math.floor((left+right)/2);
if(k>=data[mid]){
left=mid+1;
}
else{
right=mid-1;
}
}
var index=mid;
//从中间值右侧判断后面的数是否与目标值相等
for(var i=index;data[i]==k;i++){
count++;
}
//从中间值左侧怕短后面的数是否与目标值相等
for(var j=index-1;data[j]==k;j--){
count++;
}
console.log(count);
}
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦