leetcode每日一题——2022. 将一维数组转变成二维数组

一、题目描述与要求

2022. 将一维数组转变成二维数组

二、解题思路

1.需要判断原始一维数组的大小是否与目标二维数组的大小相等,即original.size() == m * n。如果不相等,则无法构造出指定大小的二维数组,直接返回空的二维数组。

2.使用迭代器对原始一维数组进行遍历。迭代器itoriginal的开头开始,每次增加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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值