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实现)供大家参考使用: 在线字数统计工具: 在线字符统计与编辑工具: 更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP数据结构与算法教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》及《php程序设计算法总结》 希望本文所述对大家PHP程序设计有所帮助 。 您可能感兴趣的文章:
|