PHP實現統計一個數字在排序數組中出現次數的方法講解

來源:互聯網
上載者:User
這篇文章主要介紹了PHP實現統計一個數字在排序數組中出現次數的方法,涉及php基於二分尋找演算法在數組中進行尋找及統計的相關操作技巧,需要的朋友可以參考下

本文執行個體講述了PHP實現統計一個數字在排序數組中出現次數的方法。分享給大家供大家參考,具體如下:

題目

統計一個數字在排序數組中出現的次數。

題解

既然是排序數組,使用二分尋找是效率最高的。找到之後再向兩側拓展一下。

代碼

<?phpfunction 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

您可能感興趣的文章:

PHP調用ffmpeg對視頻並拼接指令碼

Yii2中的情境(scenario)和驗證規則(rule)的詳解

MixPHP、Yii和CodeIgniter的並發壓力測試的小結

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.