一、题目描述与要求
二、解题思路
1.需要判断原始一维数组的大小是否与目标二维数组的大小相等,即original.size() == m * n
。如果不相等,则无法构造出指定大小的二维数组,直接返回空的二维数组。
2.使用迭代器对原始一维数组进行遍历。迭代器it
从original
的开头开始,每次增加n个元素进行遍历。这样可以确保每次取到n个连续的元素作为二维数组的一行。
3.在遍历过程中,使用emplace_back
函数将每次取到的n个元素添加到二维数组ans
中。emplace_back
函数的作用是在二维数组末尾直接构造一个新的行,并将取到的n个元素作为新行的元素。
4.返回构造好的二维数组ans
作为结果。
整体思路就是将一维数组切分成若干个长度为n的子数组,然后依次将这些子数组作为行添加到二维数组中,从而构造出一个m行n列的二维数组。
三、具体代码(C++)
class Solution {
public:
vector<vector<int>> construct2DArray(vector<int> &original, int m, int n) {
vector<vector<int>> ans;
if (original.size() != m * n) {
return ans;
}
for (auto it = original.begin(); it != original.end(); it += n) {
ans.emplace_back(it, it + n);
}
return ans;
}
};
这段代码是一个C++的解决方案,用于构造一个二维数组。函数construct2DArray
接受三个参数:原始一维数组original
、目标二维数组的行数m
和列数n
。该函数的目标是将原始一维数组按照给定的行列数构造成一个二维数组,并返回结果。
首先,代码中创建了一个空的二维数组ans
,用于存储最终结果。
接下来,通过判断原始一维数组的大小是否等于行数乘以列数,来确定是否能够构造成一个二维数组。如果原始数组的大小与期望的二维数组大小不符合,则直接返回空的二维数组ans
。
然后,使用迭代器遍历原始一维数组,并以每次遍历n个元素的方式,将其添加到二维数组ans
中。这样就可以实现将一维数组按照给定的行列数构造成一个二维数组。
最后,返回构造好的二维数组ans
。