Convert 1D Array Into 2D Array

easy array matrix simulation

Problem

Given a 0-indexed 1D integer array original and two integers m and n, build an m × n 2D array using all of original's elements. Indices 0..n−1 form row 0, indices n..2n−1 form row 1, and so on. Return the constructed 2D array, or an empty array if it is impossible (when the element count does not equal m × n).

Inputoriginal = [1,2,3,4], m = 2, n = 2
Output[[1,2],[3,4]]
First n=2 elements [1,2] form row 0; the next two [3,4] form row 1.
Inputoriginal = [1,2], m = 1, n = 1
Output[]
2 elements cannot fit a 1×1 array, so return an empty array.

def construct_2d_array(original, m, n):
    if len(original) != m * n:
        return []
    result = [[0] * n for _ in range(m)]
    for i in range(len(original)):
        r = i // n
        c = i % n
        result[r][c] = original[i]
    return result
function construct2DArray(original, m, n) {
  if (original.length !== m * n) {
    return [];
  }
  const result = Array.from({ length: m }, () => new Array(n).fill(0));
  for (let i = 0; i < original.length; i++) {
    const r = Math.floor(i / n);
    const c = i % n;
    result[r][c] = original[i];
  }
  return result;
}
int[][] construct2DArray(int[] original, int m, int n) {
    if (original.length != m * n) {
        return new int[0][0];
    }
    int[][] result = new int[m][n];
    for (int i = 0; i < original.length; i++) {
        int r = i / n;
        int c = i % n;
        result[r][c] = original[i];
    }
    return result;
}
vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {
    if ((int)original.size() != m * n) {
        return {};
    }
    vector<vector<int>> result(m, vector<int>(n));
    for (int i = 0; i < (int)original.size(); i++) {
        int r = i / n;
        int c = i % n;
        result[r][c] = original[i];
    }
    return result;
}
Time: O(m · n) Space: O(m · n)