Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Tukar Tatasusunan Kepada Tatasusunan

Tukar Tatasusunan Kepada Tatasusunan

王林
王林asal
2024-09-03 16:08:32757semak imbas

2022. Tukar Tatasusunan 1D Kepada Tatasusunan 2D

Kesukaran: Mudah

Topik: Tatasusunan, Matriks, Simulasi

Anda diberikan tatasusunan integer 1-dimensi (1D) yang asal dan dua integer, m dan n. Anda ditugaskan untuk mencipta tatasusunan 2 dimensi (2D) dengan m baris dan n lajur menggunakan semua elemen daripada asal. Elemen daripada indeks 0 hingga n - 1 (

inklusif

) asal hendaklah membentuk baris pertama tatasusunan 2D yang dibina, elemen daripada indeks n hingga 2 * n - 1 (inklusif ) hendaklah membentuk baris kedua tatasusunan 2D yang dibina, dan seterusnya. Kembalikan

tatasusunan m x n 2D yang dibina mengikut prosedur di atas, atau tatasusunan 2D kosong jika mustahil

.

Contoh 1:

Convert Array Into Array

    Input:
  • asal = [1,2,3,4], m = 2, n = 2
  • Output:
  • [[1,2],[3,4]]
  • Penjelasan:
  • Tatasusunan 2D yang dibina hendaklah mengandungi 2 baris dan 2 lajur.
    • Kumpulan pertama n=2 elemen dalam asal, [1,2], menjadi baris pertama dalam tatasusunan 2D yang dibina.
    • Kumpulan kedua n=2 elemen dalam asal, [3,4], menjadi baris kedua dalam tatasusunan 2D yang dibina.
Contoh 2:

Convert Array Into Array

    Input:
  • asal = [1,2,3], m = 1, n = 3
  • Output:
  • [[1,2,3]]
  • Penjelasan:
  • Tatasusunan 2D yang dibina hendaklah mengandungi 1 baris dan 3 lajur.
    • Letakkan ketiga-tiga elemen dalam bentuk asal ke dalam baris pertama tatasusunan 2D yang dibina.
Contoh 3:

    Input:
  • asal = [1,2], m = 1, n = 1
  • Output:
  • []
  • Penjelasan:
  • Terdapat 2 elemen dalam asal.
    • Adalah mustahil untuk memuatkan 2 elemen dalam tatasusunan 1x1 2D, jadi kembalikan tatasusunan 2D kosong.
Kekangan:

1 <= original.length <= 5 * 10
    4
  • 1 <= asal[i] <= 10
  • 5
  • 1 <= m, n <= 4 * 10
  • 4
Petunjuk:

Bilakah boleh menukar asal kepada tatasusunan 2D dan bilakah mustahil?
  1. Ia boleh dilakukan jika dan hanya jika m * n == asal.panjang
  2. Jika boleh menukar asal kepada tatasusunan 2D, simpan indeks i supaya asal[i] ialah elemen seterusnya untuk ditambahkan pada tatasusunan 2D.
Penyelesaian:

Kita perlu mengikut langkah berikut:

  1. Semak sama ada Penukaran Mungkin

    : Penukaran daripada tatasusunan 1D kepada tatasusunan 2D hanya boleh dilakukan jika jumlah bilangan elemen dalam tatasusunan 1D (original.length) betul-betul sama dengan m * n, dengan m ialah bilangan baris dan n ialah bilangan lajur. Jika syarat ini tidak dipenuhi, kembalikan tatasusunan kosong.

  2. Buat Tatasusunan 2D

    : Jika penukaran boleh dilakukan, mulakan tatasusunan 2D dengan m baris dan n lajur, dan isikannya dengan mengulangi tatasusunan 1D dan mengisi baris tatasusunan 2D mengikut baris.

  3. Mari laksanakan penyelesaian ini dalam PHP:
2022. Tukar Tatasusunan 1D Kepada Tatasusunan 2D


Penjelasan:
<?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: []
?>


<h3>
</h3>
<ul>
<li>Pengesahan Input<p>:<strong>

</strong>
</p>Kami mula-mula mengira panjang tatasusunan asal.<ul>
<li>Jika panjangnya tidak sama dengan m * n, penukaran adalah mustahil dan kami mengembalikan tatasusunan kosong.</li>
<li>


</li>

</ul>

</li>
<li>Pembinaan Tatasusunan 2D<p>:<strong>

</strong>
</p>Kami memulakan tatasusunan 2D bernama $result.<ul>
<li>Kami menggunakan gelung bersarang di mana gelung luar berjalan m kali (untuk setiap baris) dan gelung dalam berjalan n kali (untuk setiap lajur dalam satu baris).</li>
<li>Kami mengekalkan indeks $index yang menjejaki kedudukan kami dalam tatasusunan asal, menambahnya semasa kami meletakkan elemen ke dalam tatasusunan 2D.</li>
<li>


</li>

</ul>

</li>
  
  
  Contoh Output:
</ul>

<h3>Untuk contoh yang disediakan:</h3>
<p>

<br>



</p>Outputnya ialah:<pre class="brush:php;toolbar:false">$original = array(1, 2, 3, 4);
$m = 2;
$n = 2;
print_r(construct2DArray($original, $m, $n));


Pendekatan ini memastikan tatasusunan 1D ditukar dengan betul kepada tatasusunan 2D yang diingini dan ia mengendalikan kes tepi dengan cekap dengan menyemak sama ada penukaran itu mungkin.
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

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

Pautan Kenalan

Jika anda mendapati siri ini membantu, sila pertimbangkan untuk memberi

repositori

bintang di GitHub atau berkongsi siaran pada rangkaian sosial kegemaran anda ?. Sokongan anda amat bermakna bagi saya! Jika anda mahukan kandungan yang lebih berguna seperti ini, sila ikuti saya:

  • LinkedIn
  • GitHub

Atas ialah kandungan terperinci Tukar Tatasusunan Kepada Tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn