首頁 >後端開發 >php教程 >將數組轉換為數組

將數組轉換為數組

王林
王林原創
2024-09-03 16:08:32804瀏覽

2022 年。將一維數組轉換為二維數組

難度:簡單

主題:陣列、矩陣、模擬

給你一個0索引一維(1D)整數數組原始,以及兩個整數,m和n。您的任務是使用原始資料中的所有元素建立一個包含 m 行和 n 列的二維 (2D) 陣列。

原始索引從0到n - 1(包括)的元素應該形成構造的二維數組的第一行,索引n到2 * n - 1(包括 ) 應構成所構造的二維數組的第二行,依此類推。

傳回依照上述過程構造的 m x n 2D 數組,如果不可能則回傳為空的 2D 數組.

範例1:

Convert Array Into Array

  • 輸入: 原始 = [1,2,3,4], m = 2, n = 2
  • 輸出: [[1,2],[3,4]]
  • 說明:
    • 建構的二維數組應包含 2 行和 2 列。
    • 原始中的第一組 n=2 個元素 [1,2],成為構造的二維數組中的第一行。
    • 原始中的第二組 n=2 個元素 [3,4],成為構造的二維數組中的第二行。

範例2:

Convert Array Into Array

  • 輸入: 原始 = [1,2,3], m = 1, n = 3
  • 輸出: [[1,2,3]]
  • 說明:
    • 建構的二維數組應包含 1 行和 3 列。
    • 將原始中的所有三個元素放入構造的二維數組的第一行。

範例 3:

  • 輸入: 原始 = [1,2], m = 1, n = 1
  • 輸出: []
  • 說明:
    • 原版有2個元素。
    • 1x1 2D 陣列不可能容納 2 個元素,因此傳回一個空的 2D 陣列。

約束:

  • 1 4
  • 1 5
  • 1 4

提示:

  1. 什麼時候可以將原始資料轉換為二維數組,什麼時候不可能?
  2. 當且僅當 m * n == Original.length
  3. 才有可能
  4. 如果可以將 Original 轉換為 2D 數組,請保留索引 i,以便 Original[i] 是要新增到 2D 數組的下一個元素。

解:

我們需要遵循以下步驟:

  1. 檢查是否可以轉換:只有當1D 數組中的元素總數(original.length) 恰好等於時,才能從1D 數組轉換為2D 數組m * n,其中m 是行數,n 是列數。如果不滿足此條件,則傳回空數組。

  2. 建立 2D 數組:如果可以轉換,則初始化一個包含 m 行和 n 列的 2D 數組,並透過迭代 1D 數組並填充 2D 數組行來填充它按行。

讓我們用 PHP 實作這個解決方案:2022。將一維數組轉換為二維數組

<?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,則無法轉換,我們傳回一個空數組。
  • 二維陣列構造:

    • 我們初始化一個名為 $result 的二維陣列。
    • 我們使用巢狀循環,其中外循環運行 m 次(針對每一行),內循環運行 n 次(針對一行中的每一列)。
    • 我們維護一個索引 $index 來追蹤我們在原始數組中的位置,並在我們將元素放入二維數組時遞增它。

範例輸出:

對於提供的範例:

$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
        )
)

此方法可確保一維數組正確轉換為所需的二維數組,並透過檢查轉換是否可行來有效處理邊緣情況。

聯絡連結

如果您發現本系列有幫助,請考慮在 GitHub 上給 存儲庫 一個星號或在您最喜歡的社交網絡上分享該帖子? 。您的支持對我來說意義重大!

如果您想要更多類似的有用內容,請隨時關注我:

  • 領英
  • GitHub

以上是將數組轉換為數組的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn