ホームページ  >  記事  >  バックエンド開発  >  配列を配列に変換

配列を配列に変換

王林
王林オリジナル
2024-09-03 16:08:32500ブラウズ

2022年。 1D 配列を 2D 配列に変換

難易度: 簡単

トピック: 配列、行列、シミュレーション

0 インデックス付き 1 次元 (1D) 整数配列のオリジナルと、2 つの整数 m と n が与えられます。オリジナルのすべての要素を使用して、m 行 n 列の 2 次元 (2D) 配列を作成することが求められます。

元のインデックス 0 から n - 1 (を含む) の要素は、構築された 2D 配列の最初の行を形成する必要があります。インデックス n から 2 * n - 1 (を含む) の要素は、 ) は、構築された 2D 配列の 2 行目を形成する必要があります。

上記の手順に従って構築された m x n 2D 配列、またはそれが不可能な場合は空の 2D 配列を返します

例 1:

Convert Array Into Array

  • 入力: 元 = [1,2,3,4]、m = 2、n = 2
  • 出力: [[1,2],[3,4]]
  • 説明:
    • 構築された 2D 配列には 2 行 2 列が含まれている必要があります。
    • 元の n=2 要素の最初のグループ [1,2] が、構築された 2D 配列の最初の行になります。
    • 元の n=2 要素の 2 番目のグループ [3,4] は、構築された 2D 配列の 2 行目になります。

例 2:

Convert Array Into Array

  • 入力: 元 = [1,2,3]、m = 1、n = 3
  • 出力: [[1,2,3]]
  • 説明:
    • 構築された 2D 配列には 1 行と 3 列が含まれている必要があります。
    • 元の 3 つの要素すべてを、構築された 2D 配列の最初の行に入れます。

例 3:

  • 入力: 元 = [1,2]、m = 1、n = 1
  • 出力: []
  • 説明:
    • オリジナルには 2 つの要素があります。
    • 1x1 2D 配列に 2 つの要素を収めることは不可能なので、空の 2D 配列を返します。

制約:

  • 1 4
  • 1 5
  • 1 4

ヒント:

  1. オリジナルを 2D 配列に変換できるのはどのような場合でしょうか?
  2. m * n ==original.length
  3. の場合にのみ可能です。
  4. オリジナルを 2D 配列に変換できる場合は、original[i] が 2D 配列に追加する次の要素となるようにインデックス i を保持します。

解決策:

次の手順に従う必要があります:

  1. 変換が可能かどうかを確認します: 1D 配列から 2D 配列への変換は、1D 配列の要素の合計数 (original.length) が正確に等しい場合にのみ可能です。 m * n。m は行数、n は列数です。この条件が満たされない場合は、空の配列を返します。

  2. 2D 配列を作成します: 変換が可能であれば、m 行 n 列の 2D 配列を初期化し、1D 配列を反復処理して 2D 配列の行を埋めることによって配列を設定します。行ごと。

このソリューションを PHP で実装してみましょう: 2022。 1D 配列を 2D 配列に変換

<?php
/**
 * @param Integer[] $original
 * @param Integer $m
 * @param Integer $n
 * @return Integer[][]
 */
function construct2DArray($original, $m, $n) {
    ...
    ...
    ...
    /**
     * go to ./solution.php
     */
}

// Example usage:
//Example 1
$original = array(1, 2, 3, 4);
$m = 2;
$n = 2;
print_r(construct2DArray($original, $m, $n)); //Output: [[1,2],[3,4]]

//Example 2
$original = array(1, 2, 3);
$m = 1;
$n = 3;
print_r(construct2DArray($original, $m, $n)); //Output: [[1,2,3]]

//Example 3
$original = array(1, 2);
$m = 1;
$n = 1;
print_r(construct2DArray($original, $m, $n)); //Output: []
?>

説明:

  • 入力検証:

    • 最初に元の配列の長さを計算します。
    • 長さが m * n に等しくない場合、変換は不可能であり、空の配列が返されます。
  • 2D 配列の構築:

    • $result という名前の 2D 配列を初期化します。
    • 外側のループが (行ごとに) m 回実行され、内側のループが (行の各列ごとに) n 回実行される、ネストされたループを使用します。
    • 元の配列内の位置を追跡するインデックス $index を維持し、要素を 2D 配列に配置するたびにインデックスをインクリメントします。

出力例:

提供された例の場合:

$original = array(1, 2, 3, 4);
$m = 2;
$n = 2;
print_r(construct2DArray($original, $m, $n));

出力は次のようになります:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
        )
)

このアプローチにより、1D 配列が目的の 2D 配列に正しく変換されることが保証され、変換が可能かどうかをチェックすることで、特殊なケースを効率的に処理できます。

連絡先リンク

このシリーズが役立つと思われた場合は、GitHub で リポジトリ にスターを付けるか、お気に入りのソーシャル ネットワークで投稿を共有することを検討してください。あなたのサポートは私にとって大きな意味を持ちます!

このような役立つコンテンツがさらに必要な場合は、お気軽にフォローしてください:

  • LinkedIn
  • GitHub

以上が配列を配列に変換の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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