本文實(shí)例講述了PHP實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法。分享給大家供大家參考,具體如下:
題目
統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)的次數(shù)。
題解
既然是排序數(shù)組,使用二分查找是效率最高的。找到之后再向兩側(cè)拓展一下。
代碼
?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款功能類似的統(tǒng)計(jì)工具(JS實(shí)現(xiàn))供大家參考使用:
在線字?jǐn)?shù)統(tǒng)計(jì)工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計(jì)與編輯工具:
http://tools.jb51.net/code/char_tongji
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP數(shù)據(jù)結(jié)構(gòu)與算法教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》及《php程序設(shè)計(jì)算法總結(jié)》
希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。
您可能感興趣的文章:- php實(shí)現(xiàn)數(shù)組中出現(xiàn)次數(shù)超過一半的數(shù)字的統(tǒng)計(jì)方法
- PHP重置數(shù)組為連續(xù)數(shù)字索引的幾種方式總結(jié)
- PHP簡單實(shí)現(xiàn)合并2個(gè)數(shù)字鍵數(shù)組值的方法
- php恢復(fù)數(shù)組的key為數(shù)字序列的方法
- php提取數(shù)字拼接數(shù)組的具體操作