LeetCode 题解工作台
将一维数组转变成二维数组
给你一个下标从 0 开始的一维整数数组 original 和两个整数 m 和 n 。你需要使用 original 中 所有 元素创建一个 m 行 n 列的二维数组。 original 中下标从 0 到 n - 1 (都 包含 )的元素构成二维数组的第一行,下标从 n 到 2 * n - 1 (都 包…
3
题型
6
代码语言
3
相关题
当前训练重点
简单 · 数组·matrix
答案摘要
根据题目描述,我们知道,要想构造出一个 行 列的二维数组,需要满足 $m \times n$ 等于原数组的长度。如果不满足,直接返回空数组即可。 如果满足,我们可以按照题目描述的过程,将原数组中的元素依次放入二维数组中即可。
Interview AiBoxInterview AiBox 实时 AI 助手,陪你讲清 数组·matrix 题型思路
题目描述
给你一个下标从 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 * 1041 <= original[i] <= 1051 <= m, n <= 4 * 104
解题思路
方法一:模拟
根据题目描述,我们知道,要想构造出一个 行 列的二维数组,需要满足 等于原数组的长度。如果不满足,直接返回空数组即可。
如果满足,我们可以按照题目描述的过程,将原数组中的元素依次放入二维数组中即可。
时间复杂度 ,其中 和 分别为二维数组的行数和列数。忽略答案的空间消耗,空间复杂度 。
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)]
复杂度分析
| 指标 | 值 |
|---|---|
| 时间 | complexity is O(m \times n) because each element is accessed once. Space complexity is O(1) additional space aside from the output since slices reference elements directly. |
| 空间 | O(1) |
面试官常问的追问
外企场景- question_mark
Are you checking whether the total elements match m times n?
- question_mark
Can you fill rows sequentially while maintaining the order from the original array?
- question_mark
What will you return if conversion is impossible due to element count mismatch?
常见陷阱
外企场景- error
Not verifying that original.length equals m times n, leading to incorrect output or runtime errors.
- error
Incorrectly slicing elements, which can shift positions and break row formation.
- error
Assuming extra elements can be truncated instead of returning an empty array when exact fit is impossible.
进阶变体
外企场景- arrow_right_alt
Convert 1D array into jagged 2D array where row lengths can vary, requiring dynamic slicing.
- arrow_right_alt
Fill the 2D array column-major instead of row-major, changing the iteration pattern.
- arrow_right_alt
Handle negative or zero elements in original and adjust the feasibility check accordingly.