2022. Convert 1D Array Into 2D Array — LeetCode(Python)

Palash Sharma
3 min readJul 2, 2022

--

I got you!

Problem:

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:

Example image showing conversion from 1D to 2D array
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

Solution:

if m*n != len(original):
return []

ans = []
for i in range(0, m*n, n):
ans.append(original[i:i+n])

return ans

Explanation —

We return an empty list if the values of m * n is not equal to the length of the 1D array original, because such a 2D array would not consist of all elements in the 1D array and thus, can’t be created.

We then loop over all the elements in the 1D array, but in a very special way.

We know that there are m * n elements in it, so we traverse from 0 to m * n.

While doing so, we make n units of jump between each iteration.

This is because there need to be n elements in each row as there are n columns.

During every pass, we append n items from original to ans.

Time and Space Complexity —

m * n elements mean all elements in the given 1D array, so iterating through them means iterating in linear time.

Thus, if N is the number of elements in the array original,

Time Complexity: O(N)

Space Complexity: O(1) [extra] and O(N) [true]

Feel free to ask any related questions in the comment section or the links provided down below.

I don’t have friends:

Let’s be friends!

Connect with me on:

LinkedIn

GitHub

Instagram (I know. Very professional)

Jai Shri Ram 🙏

--

--

No responses yet