這篇文章主要介紹了PHP實作統計一個數字在排序數組中出現次數的方法,涉及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
#Yii2中的場景(scenario)和驗證規則(rule)的詳解
MixPHP、Yii和CodeIgniter的並發壓力測試的小結
##
以上是PHP實作統計一個數字在排序數組中出現次數的方法講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!