Skip to main content

Convert 1D Array Into 2D Array - Solution & Explanation

EasyArrayMatrixSimulation18 min readAsked at: Amazon, Microsoft, Meta +2
Practice this problem

Problem Statement

You are given a 0-indexed 1-dimensional (1D) integer array original, and two integers, m and n. You are tasked with creating a 2-dimensional (2D) array with m rows and n columns using all the elements from original.

The elements from indices 0 to n - 1 (inclusive) of original should form the first row of the constructed 2D array, the elements from indices n to 2 * n - 1 (inclusive) should form the second row of the constructed 2D array, and so on.

Return an m x n 2D array constructed according to the above procedure, or an empty 2D array if it is impossible.

 

Example 1:

Input: original = [1,2,3,4], m = 2, n = 2
Output: [[1,2],[3,4]]
Explanation: The constructed 2D array should contain 2 rows and 2 columns.
The first group of n=2 elements in original, [1,2], becomes the first row in the constructed 2D array.
The second group of n=2 elements in original, [3,4], becomes the second row in the constructed 2D array.

Example 2:

Input: original = [1,2,3], m = 1, n = 3
Output: [[1,2,3]]
Explanation: The constructed 2D array should contain 1 row and 3 columns.
Put all three elements in original into the first row of the constructed 2D array.

Example 3:

Input: original = [1,2], m = 1, n = 1
Output: []
Explanation: There are 2 elements in original.
It is impossible to fit 2 elements in a 1x1 2D array, so return an empty 2D array.

 

Constraints:

  • 1 <= original.length <= 5 * 104
  • 1 <= original[i] <= 105
  • 1 <= m, n <= 4 * 104

Approach Overview

Problem Overview: You receive a 1D array original and two integers m and n. The goal is to reshape the array into an m x n matrix using all elements in row-major order. If the number of elements in original is not exactly m * n, constructing such a matrix is impossible and you return an empty matrix.

The problem focuses on simple indexing logic and matrix construction using concepts from array and matrix manipulation. Since each element is processed exactly once, the challenge is mainly about mapping indices correctly.

Approach 1: Using Direct Index Mapping (O(n) time, O(m*n) space)

Create a result matrix with m rows and n columns. Iterate through the original array once and compute the target position for each element using index math. For an index i in the 1D array, the row becomes i / n and the column becomes i % n. This mapping converts the linear index into a 2D coordinate following row-major order. The approach avoids nested loops and directly calculates the correct cell for each element. Time complexity is O(n) where n is the length of the input array, and space complexity is O(m*n) for the constructed matrix.

Approach 2: Iterative Filling (O(n) time, O(m*n) space)

Another straightforward method is to build the matrix row by row. First check if original.length == m * n. If valid, iterate through the array while maintaining a pointer. For each row, fill n elements sequentially before moving to the next row. This simulates how a matrix is naturally filled in row-major order and is often easier to reason about during implementation. The algorithm still processes each element exactly once, giving O(n) time complexity and O(m*n) space complexity. This method is commonly described as a simple simulation of matrix construction.

Recommended for interviews: Direct index mapping is typically the preferred explanation. It shows you understand how linear indices translate into matrix coordinates and demonstrates comfort with array math. The iterative filling approach is equally efficient and easier to read, but interviewers often appreciate the concise index-mapping insight.

Approach 1: Approach 1: Using Direct Index Mapping

This approach involves directly mapping each element from the 1D array to its corresponding position in the 2D array.

The key idea is to iterate over the original array, calculate the correct row and column for each element, and place it accordingly in the 2D array.

If the total number of elements in the original array does not match m * n, return an empty array as it's impossible to fill the 2D array correctly.

The given C solution first checks if the transformation is feasible by comparing the size of the original array to m * n. If they do not match, an empty 2D array is returned.

If feasible, the function allocates memory for the 2D array and fills each row and column based on the equivalent index from the original array.

Code

C

C++

Java

Python

C#

JavaScript

Complexity

Time Complexity: O(m * n), as each element in the original array is accessed exactly once to fill the 2D array.

Space Complexity: O(m * n) for the 2D array itself.

Try this approach in the editor →

Approach 2: Approach 2: Iterative Filling

An alternative approach is to explicitly iterate over each element of the 1D array and place it in the correct position of the 2D array.

This is similar to the direct mapping approach but demonstrates a more explicit handling of indices and 2D placements.

Again, we must first ensure that conversion is feasible by matching the length of the original array and m * n. If not feasible, return an empty array.

This solution checks if the array can be converted using the same condition.

The 2D array is allocated and populated using nested loops, explicitly filling each element based on calculated indices from the original array.

Code

C

C++

Java

Python

C#

JavaScript

Complexity

Time Complexity: O(m * n). Space Complexity: O(m * n) for memory used in 2D array creation.

Try this approach in the editor →

Approach 3: Simulation

According to the problem description, we know that to construct an m-row and n-column two-dimensional array, it needs to satisfy that m times n equals the length of the original array. If it does not satisfy, return an empty array directly.

If it does satisfy, we can follow the process described in the problem, and put the elements from the original array into the two-dimensional array in order.

The time complexity is O(m times n), where m and n are the number of rows and columns of the two-dimensional array, respectively. Ignoring the space consumption of the answer, the space complexity is O(1).

Code

Python

Java

C++

Go

TypeScript

JavaScript

Try this approach in the editor →

Complexity Comparison

ApproachComplexity
Approach 1: Using Direct Index Mapping

Time Complexity: O(m * n), as each element in the original array is accessed exactly once to fill the 2D array.

Space Complexity: O(m * n) for the 2D array itself.

Approach 2: Iterative Filling

Time Complexity: O(m * n). Space Complexity: O(m * n) for memory used in 2D array creation.

Simulation—

Detailed Complexity Analysis

ApproachTimeSpaceWhen to Use
Direct Index MappingO(n)O(m*n)Best general solution. Efficient and shows clear understanding of row/column index math.
Iterative FillingO(n)O(m*n)Good when writing simple readable code or explaining matrix construction step-by-step.

Video Solution

Covert 1D Array Into 2D Array - Leetcode 2022 - Python • NeetCodeIO • 8,391 views views

Watch 9 more video solutions →

Frequently Asked Questions

Is Convert 1D Array Into 2D Array easy or hard?
Convert 1D Array Into 2D Array is classified as an Easy problem. The main requirement is checking whether the array length equals m * n and correctly mapping indices while constructing the matrix.
Convert 1D Array Into 2D Array Python/Java solution
Both Python and Java solutions follow the same idea. Allocate a matrix of size m x n and fill it using index mapping or iterative row filling. Each element from the original array is inserted exactly once, resulting in O(n) time complexity.
How to solve Convert 1D Array Into 2D Array in O(n)?
First verify that original.length equals m * n. Then iterate through the array once and place each value into the matrix using row = i / n and col = i % n. This avoids nested loops and guarantees O(n) processing time.
What is the best approach for Convert 1D Array Into 2D Array?
The best approach uses direct index mapping. Iterate through the 1D array and compute the matrix position using row = i / n and col = i % n. This converts the linear index into a row-major 2D coordinate in O(n) time with O(m*n) space for the resulting matrix.
Is Convert 1D Array Into 2D Array asked at Google/Amazon/Meta?
Problems involving array reshaping and index mapping appear frequently in coding interviews at companies like Amazon, Google, and Meta. While this exact problem may not always appear, the concept of mapping 1D indices to 2D matrices is a common interview pattern.
What data structure is used in Convert 1D Array Into 2D Array?
The problem primarily uses arrays and matrices. The input is a 1D array and the output is a 2D matrix. The solution relies on index arithmetic to map positions between the two representations.
What is the time complexity of Convert 1D Array Into 2D Array?
The optimal solution runs in O(n) time where n is the length of the input array. Each element is processed exactly once when filling the matrix. Space complexity is O(m*n) because a new 2D matrix of size m by n must be created.

Ready to solve this problem?

Practice Convert 1D Array Into 2D Array with our built-in code editor and test cases.

Practice on FleetCode