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 * 1041 <= original[i] <= 1051 <= m, n <= 4 * 104This 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.
C++
Java
Python
C#
JavaScript
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.
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.
C++
Java
Python
C#
JavaScript
Time Complexity: O(m * n). Space Complexity: O(m * n) for memory used in 2D array creation.
| Approach | Complexity |
|---|---|
| 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. |
Covert 1D Array Into 2D Array - Leetcode 2022 - Python • NeetCodeIO • 7,212 views views
Watch 9 more video solutions →Practice Convert 1D Array Into 2D Array with our built-in code editor and test cases.
Practice on FleetCode