PHP實現(xiàn)統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法
本文實例講述了PHP實現(xiàn)統(tǒng)計一個數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法。分享給大家供大家參考,具體如下:
題目
統(tǒng)計一個數(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)計工具(JS實現(xiàn))供大家參考使用:
在線字?jǐn)?shù)統(tǒng)計工具:
http://tools.jb51.net/code/zishutongji
在線字符統(tǒng)計與編輯工具:
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è)計算法總結(jié)》
希望本文所述對大家PHP程序設(shè)計有所幫助。
相關(guān)文章
PHP采集相關(guān)教程之一 CURL函數(shù)庫
目前為目最全的CURL中文說明了,學(xué)PHP的要好好掌握。有很多的參數(shù)。大部份都很有用。真正掌握了它和正則,一定就是個采集高手了。2010-02-02
php高性能日志系統(tǒng) seaslog 的安裝與使用方法分析
這篇文章主要介紹了php高性能日志系統(tǒng) seaslog 的安裝與使用方法,結(jié)合實例形式分析了php日志系統(tǒng) seaslog 的安裝、配置、使用方法及相關(guān)注意事項,需要的朋友可以參考下2020-02-02
PHP在終端中實現(xiàn)進度條來處理數(shù)據(jù)的示例詳解
在PHP中,有時候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長時間運行的任務(wù),同時希望能夠?qū)崟r跟蹤任務(wù)的進度,在 PHP 中,有時候你需要在終端中處理大量數(shù)據(jù)或執(zhí)行長時間運行的任務(wù),同時希望能夠?qū)崟r跟蹤任務(wù)的進度,需要的朋友可以參考下2023-10-10
PHP面向?qū)ο蟪绦蛟O(shè)計之接口的繼承定義與用法詳解
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計之接口的繼承定義與用法,結(jié)合實例形式分析了php接口的概念、定義、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-12-12

