本文實例講述了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;
- }
希望本文所述對大家PHP程序設計有所幫助。