加载中...
2022-将一维数组转变成二维数组(Convert 1D Array Into 2D Array)
发表于:2021-12-03 | 分类: 简单
字数统计: 1.1k | 阅读时长: 5分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/convert-1d-array-into-2d-array

英文原文

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.

Example 4:

Input: original = [3], m = 1, n = 2
Output: []
Explanation:
There is 1 element in original.
It is impossible to make 1 element fill all the spots in a 1x2 2D array, so return an empty 2D array.

 

Constraints:

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

中文题目

给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和  n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。

original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (都 包含 )的元素构成二维数组的第二行,依此类推。

请你根据上述过程返回一个 m x n 的二维数组。如果无法构成这样的二维数组,请你返回一个空的二维数组。

 

示例 1:

输入:original = [1,2,3,4], m = 2, n = 2
输出:[[1,2],[3,4]]
解释:
构造出的二维数组应该包含 2 行 2 列。
original 中第一个 n=2 的部分为 [1,2] ,构成二维数组的第一行。
original 中第二个 n=2 的部分为 [3,4] ,构成二维数组的第二行。

示例 2:

输入:original = [1,2,3], m = 1, n = 3
输出:[[1,2,3]]
解释:
构造出的二维数组应该包含 1 行 3 列。
将 original 中所有三个元素放入第一行中,构成要求的二维数组。

示例 3:

输入:original = [1,2], m = 1, n = 1
输出:[]
解释:
original 中有 2 个元素。
无法将 2 个元素放入到一个 1x1 的二维数组中,所以返回一个空的二维数组。

示例 4:

输入:original = [3], m = 1, n = 2
输出:[]
解释:
original 中只有 1 个元素。
无法将 1 个元素放满一个 1x2 的二维数组,所以返回一个空的二维数组。

 

提示:

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

通过代码

高赞题解

思路和心得:

(一)模拟

[]
class Solution: def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]: N = len(original) if N != m * n: return [] res = [[0 for _ in range(n)] for _ in range(m)] for i in range(N): r = i // n c = i % n res[r][c] = original[i] return res
[]
class Solution { public: vector<vector<int>> construct2DArray(vector<int>& original, int m, int n) { int Row = m; int Col = n; int N = (int)original.size(); if (N != Row * Col){ return vector<vector<int>>{}; } vector<vector<int>> res (Row, vector<int>(Col)); for (int i = 0; i < N; i ++) { int r = i / Col; int c = i % Col; res[r][c] = original[i]; } return res; } };
[]
class Solution { public int[][] construct2DArray(int[] original, int m, int n) { int Row = m; int Col = n; int N = original.length; if (N != Row * Col){ return new int [][] {}; } int [][] res = new int [Row][Col]; for (int i = 0; i < N; i ++) { int r = i / Col; int c = i % Col; res[r][c] = original[i]; } return res; } }

统计信息

通过次数 提交次数 AC比率
3806 5804 65.6%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
2003-每棵子树内缺失的最小基因值(Smallest Missing Genetic Value in Each Subtree)
下一篇:
2023-连接后等于目标字符串的字符串对(Number of Pairs of Strings With Concatenation Equal to Target)
本文目录
本文目录