>백엔드 개발 >PHP 튜토리얼 >배열을 배열로 변환

배열을 배열로 변환

王林
王林원래의
2024-09-03 16:08:32804검색

2022. 1D 배열을 2D 배열로 변환

난이도: 쉬움

주제: 어레이, 매트릭스, 시뮬레이션

인덱스가 0인 1차원(1D) 정수 배열 원본과 두 개의 정수 m과 n이 주어졌습니다. 귀하는 원본의 모든 요소를 ​​사용하여 m개의 행과 n개의 열로 구성된 2차원(2D) 배열을 생성해야 합니다.

원본의 인덱스 0부터 n - 1(포함)의 요소는 구성된 2D 배열의 첫 번째 행을 형성해야 하며, 인덱스 n에서 2 * n - 1(포함)의 요소는 생성된 2D 배열의 첫 번째 행을 형성해야 합니다. )은 구성된 2D 배열의 두 번째 행을 형성해야 합니다.

위 절차에 따라 구성된 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 요소로 구성된 두 번째 그룹인 [3,4]는 구성된 2D 배열의 두 번째 행이 됩니다.

예 2:

Convert Array Into Array

  • 입력: 원본 = [1,2,3], m = 1, n = 3
  • 출력: [[1,2,3]]
  • 설명:
    • 구성된 2D 배열은 행 1개와 열 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 == 원본.길이인 경우에만 가능합니다
  3. 원본을 2D 배열로 변환할 수 있는 경우 원본[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에서 저장소에 별표를 표시하거나 즐겨찾는 소셜 네트워크에서 게시물을 공유해 보세요. 여러분의 지원은 저에게 큰 의미가 될 것입니다!

이런 유용한 콘텐츠를 더 원하시면 저를 팔로우해주세요.

  • 링크드인
  • 깃허브

위 내용은 배열을 배열로 변환의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.