ホームページ  >  記事  >  バックエンド開発  >  PHP は、ソートされた配列に数値が出現する回数をカウントします。

PHP は、ソートされた配列に数値が出現する回数をカウントします。

小云云
小云云オリジナル
2018-01-15 10:06:291858ブラウズ

この記事では主に、ソートされた配列内の数値の出現数をカウントする 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;
}

関連推奨事項:

ユーザー定義の並べ替えられた配列に関する質問

並べ替えられた配列内で、指定された数値の出現回数を見つけます。たとえば、[ 1, 2 , 2, 2, 3] in

特定のキー値に従って配列を並べ替えます

以上がPHP は、ソートされた配列に数値が出現する回数をカウントします。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。