2018-12-26 17:14:10 1654瀏覽
對(duì)PHP開(kāi)發(fā)技術(shù)感興趣或者是參加PHP培訓(xùn)的小伙伴應(yīng)該或多或少的了解一點(diǎn)PHP實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法,不知道的小伙伴也不要著急,本篇文章扣丁學(xué)堂PHP培訓(xùn)小編和大家分享一下PHP實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法,希望對(duì)小伙伴們有所幫助。
文章中主要涉及PHP基于二分查找算法在數(shù)組中進(jìn)行查找及統(tǒng)計(jì)的相關(guān)操作技巧,具體如下:
題目:
統(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);
// 如果沒(méi)找到
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;
}
以上就是扣丁學(xué)堂PHP在線學(xué)習(xí)小編給大家分享的PHP實(shí)現(xiàn)統(tǒng)計(jì)一個(gè)數(shù)字在排序數(shù)組中出現(xiàn)次數(shù)的方法,希望對(duì)小伙伴們有所幫助,想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢。
想要學(xué)好PHP開(kāi)發(fā)小編給大家推薦口碑良好的扣丁學(xué)堂,扣丁學(xué)堂有專(zhuān)業(yè)老師制定的PHP學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的PHP課程體系和PHP視頻教程供大家學(xué)習(xí),想要學(xué)好PHP開(kāi)發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂PHP技術(shù)交流群:374332265。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“php培訓(xùn)資訊”的相關(guān)文章>>