本文实例讲述了PHP实现统计一个数字在排序数组中出现次数的方法。分享给大家供大家参考
本文实例讲述了PHP实现统计一个数字在排序数组中出现次数的方法。分享给大家供大家参考,具体如下:
题目
统计一个数字在排序数组中出现的次数。
题解
既然是排序数组,使用二分查找是效率最高的。找到之后再向两侧拓展一下。
代码
<?php
function GetNumberOfK($data, $k)
{
if(count($data)==0){
return 0;
}
$index = 0;
$low = 0;
$high = count($data)-1;
$middle = 0;
//二分查找找到k的index
while($low<=$high){
$middle = ($high+$low)>>1;
if($data[$middle]==$k){
$index = $middle;
break;
}
else if($data[$middle]>$k) {
$high = $middle -1;
}else{
$low = $middle+1;
}
$index = -1;
}
// console.log(index);
// 如果没找到
if($index==-1){
return 0;
}
//找到了 分别往左右查找边界
$start = $index;
$end = $index;
$count = 0;
while($data[$start]==$k){
$count++;
$start--;
}
while($data[$end]==$k){
$count++;
$end++;
}
return $count-1;
}
PS:这里再为大家推荐2款功能类似的统计工具(JS实现)供大家参考使用:
在线字数统计工具: http://tools.jb51.net/code/zishutongji
在线字符统计与编辑工具: http://tools.jb51.net/code/char_tongji
PHP 统计 数字 排序数组 出现次数