返回介绍

solution / 2000-2099 / 2022.Convert 1D Array Into 2D Array / README_EN

发布于 2024-06-17 01:03:11 字数 5514 浏览 0 评论 0 收藏 0

2022. Convert 1D Array Into 2D Array

中文文档

Description

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

Solutions

Solution 1: 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)$.

class Solution:
  def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
    if m * n != len(original):
      return []
    return [original[i : i + n] for i in range(0, m * n, n)]
class Solution {
  public int[][] construct2DArray(int[] original, int m, int n) {
    if (m * n != original.length) {
      return new int[0][0];
    }
    int[][] ans = new int[m][n];
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < n; ++j) {
        ans[i][j] = original[i * n + j];
      }
    }
    return ans;
  }
}
class Solution {
public:
  vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) {
    if (m * n != original.size()) {
      return {};
    }
    vector<vector<int>> ans(m, vector<int>(n));
    for (int i = 0; i < m; ++i) {
      for (int j = 0; j < n; ++j) {
        ans[i][j] = original[i * n + j];
      }
    }
    return ans;
  }
};
func construct2DArray(original []int, m int, n int) (ans [][]int) {
  if m*n != len(original) {
    return [][]int{}
  }
  for i := 0; i < m*n; i += n {
    ans = append(ans, original[i:i+n])
  }
  return
}
function construct2DArray(original: number[], m: number, n: number): number[][] {
  if (m * n != original.length) {
    return [];
  }
  const ans: number[][] = [];
  for (let i = 0; i < m * n; i += n) {
    ans.push(original.slice(i, i + n));
  }
  return ans;
}
/**
 * @param {number[]} original
 * @param {number} m
 * @param {number} n
 * @return {number[][]}
 */
var construct2DArray = function (original, m, n) {
  if (m * n != original.length) {
    return [];
  }
  const ans = [];
  for (let i = 0; i < m * n; i += n) {
    ans.push(original.slice(i, i + n));
  }
  return ans;
};

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文