ホームページ  >  記事  >  バックエンド開発  >  PHPで一連の数字の中から連続しない数字を見つける方法

PHPで一連の数字の中から連続しない数字を見つける方法

PHPz
PHPzオリジナル
2023-04-05 10:31:22740ブラウズ

PHP 開発では、一連の数値の中から不連続な数値を見つけることが必要になることがよくあります。この要件を迅速かつ効率的に実現するにはどうすればよいでしょうか?この記事ではそれについて詳しく説明します。

1. 問題の背景

一連の数字の中から不連続な数字、つまり、ある数字の次の数字から一定の間隔がある数字を見つけます。たとえば、シーケンス [1、2、6、7、9、12、15、17] が与えられ、間隔が 4 であると仮定して、不連続な数値を見つけるように求められた場合、戻り値は [2、9、17] になります。

2. 問題分析

この要件を実現するには、数値シーケンス全体を走査し、数値ごとに次の処理を実行する必要があります。数値と前の数値 数値の差が指定された間隔に等しいかどうか。等しい場合は、その数値が不連続な数値の 1 つであることを示します。等しくない場合は、その数値が現在の数値として記録されます。

    記録された数値を結果配列に追加し、最後に結果配列を返します。
  1. 特定の実装では、次のメソッドを使用できます。

$result 配列を定義して、不連続な数値を格納します。

    $previous 変数を定義して、前の番号を記録します。
  1. 数値のシーケンスをたどって、各数値を処理します。
  2. 数値と前の数値の差が指定された間隔に等しい場合、数値は $result 配列に追加されます;

      それ以外の場合、数値は $ として記録されます前の。
    1. #$result 配列を返します。
  3. 具体的な実装コードは次のとおりです:
  4. function findDiscontinuousNumbers($nums, $interval) {
        $result = [];
        $previous = null;
        foreach ($nums as $num) {
            if (!is_null($previous) && $num - $previous == $interval) {
                $result[] = $num;
            }
            $previous = $num;
        }
        return $result;
    }
    
    $nums = [1, 2, 6, 7, 9, 12, 15, 17];
    $interval = 4;
    $result = findDiscontinuousNumbers($nums, $interval);
    print_r($result);
  5. 3. コードの最適化

上記の実装はすでに要件を満たしていますが、次の点では効率的ではない可能性があります。実際の使用です。次の最適化を検討してください。

数値が不連続な数値として記録されている場合、後続の数値は連続することができないため、次の処理の前に $previous をこの不連続な数値に設定できます。

差分が大きいデジタルシーケンスの検索では、トラバーサル処理中に最後の不連続な番号の位置を記録し、次の検索をその位置から直接処理できるため、不要なトラバーサルを削減できます。
  1. 最適化されたコードは次のとおりです:
  2. function findDiscontinuousNumbers($nums, $interval) {
        $result = [];
        $previous = null;
        $last_discontinuous_index = null; // 上一次不连续数字的索引位置
        for ($i = 0; $i < count($nums); ) {
            if (!is_null($previous)) {
                if ($nums[$i] - $previous == $interval) {
                    $result[] = $nums[$i];
                } else {
                    $previous = $nums[$i];
                    $last_discontinuous_index = $i;
                }
            } else {
                $previous = $nums[$i];
                $last_discontinuous_index = $i;
            }
            $i += ($i == $last_discontinuous_index + 1) ? 1 : $interval;
        }
        return $result;
    }
    
    $nums = [1, 2, 6, 7, 9, 12, 15, 17];
    $interval = 4;
    $result = findDiscontinuousNumbers($nums, $interval);
    print_r($result);
  3. IV. 概要

この記事では、PHP で不連続な数値を見つける方法を簡単に紹介し、基本的な実装を示します。実際の使用では、より良いパフォーマンスと効果を達成するために、さまざまなニーズに応じて適切な実装方法と最適化手段を選択する必要があります。

以上がPHPで一連の数字の中から連続しない数字を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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