ホームページ  >  記事  >  バックエンド開発  >  指定された配列が要素を半分にすることによって 1 から N までの順列を形成できるかどうかをチェックします

指定された配列が要素を半分にすることによって 1 から N までの順列を形成できるかどうかをチェックします

PHPz
PHPz転載
2023-09-10 12:05:021099ブラウズ

指定された配列が要素を半分にすることによって 1 から N までの順列を形成できるかどうかをチェックします

私たちの目標は、配列に含まれる各項目に対して複数の除算を実行すると、重複のない 1 から N までの整数のリストが作成されるかどうかを判断することです。この取り組みが成功すれば、調査目標は無事に達成されたことになります。基本的に、特定の配列で提供されるすべての要素を 2 つずつカットすると、完全に 1 から N までの非反復値で構成される順列が得られるかどうかを判断することが、私たちの作業の主な焦点です。確認されたら、論文を評価することが次の当然のステップとなります。

###文法###

提案したソリューションを詳しく説明する前に、実装しようとしているメソッドの構文を大まかに理解することが重要です。

リーリー ###アルゴリズム###

この問題を解決するには、以下に概説するアルゴリズムを使用して段階的に進めてみましょう -

配列内で観察されるコンポーネントに細心の注意を払うには、まずコレクションまたはハッシュ セットを開始します。次に、その配列に存在する各要素を反復処理します。

  • 1 から N までの整数を取得するには、各要素を 2 で複数回割る必要があります。

  • 結果の値がコレクションにすでに存在するかどうかを確認します。重複している場合は、配置内に重複が存在できないため、 false を返します。

  • 配列が有効な配置であるためには、各要素が上記の条件を満たしている必要があります。この基準が完全に満たされていると仮定すると、真の戻り値を提供することでその適格性を確認することが、適切な行動であると考えられます。

  • ###方法###

    この問題を効果的に解決するには。さまざまな戦略を検討すると役立つ場合があります。考えられる 2 つのアプローチを提案します -

  • 方法 1: セットベースの方法

効率的なアプローチを作成するには、プロセス全体で発生するコンポーネントを記録するために作成されたコレクションを使用した追跡システムを実装するなど、細心の注意を払ったテクニックを使用する必要があります。これには、除算プロセスを通じて各コンポーネントを繰り返し評価し、その結果の値が 1 から N の範囲値の間にあることを確認し、次に新しく観察された項目を追加する前に検証のためにトレース セットをチェックし、異常がある場合は false を返し、それ以外の場合は返します。すべての値が Constellation で必要な評価チェックに合格すると true になります。

###例### リーリー ###出力### リーリー

イラスト

方法 1 の最初のステップでは、配列内に存在する要素を追跡するために順序なしセットを設定します。このコーディング方法は、同じ配列内の各要素を繰り返し処理し、毎回要素を 2 で割って、繰り返し 1 から N までの整数に減らします。これらの反復中に、作成されたように見える項目が同じコレクション内にすでに作成されているかどうかがチェックされ、それによって単純に重複による重複した順列を回避しようとします。これらの繰り返しの順列から生じる重複が検出されると、重複が完了せずにすべてがチェックされた場合と同様に false が返され、 true として渡され、指定されたセットをそれぞれの順列に移動できるかどうかを効果的に示し、そのコンポーネントを半分にすることで最小化されます。彼ら。

方法 2: 並べ替え方法

昇順ソートは、各配列項目がソートされたリスト内で一致する値として存在できるかどうかを検出するのに役立ちます。この基準を満たす項目がない場合、出力は false を返しますが、すべての項目がこのテストに合格すると、true を返します。

###例### リーリー ###出力### リーリー

イラスト

方法 2 (ソート方法) によれば、コード ルーチンをさらにチェックする前に、まず元の入力配列を昇順でソートします。次に、コードは、新しく並べ替えられたインデックス値の位置の範囲内の位置に基づいて確立された指定された仮定の値に達するまで、上記の配列の個々の要素に対してさまざまな反復を実行し、要素が 2 で割り切れるかどうかを確認します。このような反復中に、これらの事前定義されたキー条件を満たさないケースがある場合、コードは結果を「False」として記述します。これは、この配列を対応する順次配列に変換できないことを意味します。同時に、逆に、準拠した各要素は「真の」結果を生成し、配列再編成の目標に対して実現可能な前向きな方向性を提供します。

###結論は###

この記事では、指定された配列の要素を半分にすることで、1 から N の範囲の数値を含む順列に変換できるかどうかを検証するという課題について詳しく説明します。この問題を効率的に解決するための概要、構文、アルゴリズム手順を読者に提供します。さらに、完全な C 実行可能コード例とともに 2 つの可能なアプローチを提供します。この記事で取り上げたセットベースの手法または並べ替え戦略を適用することにより、読者は、特定の配列が法的取り決めに必要な条件をすべて満たしているかどうかを満足のいくまで判断できます。

以上が指定された配列が要素を半分にすることによって 1 から N までの順列を形成できるかどうかをチェックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。