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

在这里插入图片描述

LeetCode系列文章

一、题目描述

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

   o r i g i n a l original original中下标从 0 0 0 n − 1 n-1 n1(都包含)的元素构成二维数组的第一行,下标从 n n n 2 × n − 1 2\times n-1 2×n1(都包含)的元素构成二维数组的第二行,依此类推。

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

二、示例

  输入: o r i g i n a l = [ 1 , 2 , 3 , 4 ] , m = 2 , n = 2 original = [1, 2, 3, 4], m = 2, n = 2 original=[1,2,3,4],m=2,n=2
  输出: [ [ 1 , 2 ] , [ 3 , 4 ] ] [ [1, 2], [3, 4] ] [[1,2],[3,4]]
在这里插入图片描述

三、主体思路

首先需要判断 o r i g i n a l original original数组是否可以构成一个 m × n m \times n m×n的二维数组,如果无法构成则直接返回一个空的二维数组即可;如果可以构成,那么每次从 o r i g i n a l original original数组中取出 n n n个元素作为二维数组中的某一行,直到 o r i g i n a l original original数组当中的元素被取完。
在这里插入图片描述

四、代码实现

1、新手用vector

这里每次在取 n n n个元素作为二维数组的某一行时,我们通常会依次取 n n n个元素,将这n个元素依次插入到一个临时数组中,最后再将这个临时数组当中的数据插入到二维数组当中,重复这个过程,直到将 o r i g i n a l original original数组当中的元素取完。
在这里插入图片描述

2、老手用vector

但实际上取 n n n个元素插入到临时数组不必这么麻烦,我们可以通过这 n n n个元素的首尾迭代器构建出一个临时数组,然后将这个临时数组当中的数据插入到二维数组当中。
在这里插入图片描述

3、大佬用vector

实际C++11中给 v e c t o r vector vector容器新引入了成员函数emplace_back,此时我们根本不用自己创建临时数组,每次向二维数组插入 n n n个元素时,直接传入这 n n n个元素的首尾迭代器即可。
在这里插入图片描述

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2021dragon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值