LeetCode | 2022.将一维数组转变为二维数组



这道题思路比较简单,比较容易想到的是先判断m和n构成的二维数组在形式上是否可以由原来的数组转变而成,若不可以返回空数组,若可以直接用一个二重循环遍历一遍即可,时间复杂度 O ( n 2 ) O(n^2) O(n2)

python 复制代码
class Solution(object):
    def construct2DArray(self, original, m, n):
        """
        :type original: List[int]
        :type m: int
        :type n: int
        :rtype: List[List[int]]
        """
        ans = [[0] * n for _ in range(m)]

        if m * n != len(original):
            return []
        elif m == 1:
            return [original]
        else:
            count = 0
            for i in range(m):
                for j in range(n):
                    ans[i][j] = original[count]
                    count += 1
        return ans

题解的写法更为简洁,设original的长度为k,根据题意,如果k≠m*n则无法构成二维数组,此时返回空数组。否则我们可以遍历original,每n个元素创建一个一维数组,放入二维数组中

python 复制代码
class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        return [original[i: i + n] for i in range(0, len(original), n)] if len(original) == m * n else []
相关推荐
fengfuyao9853 分钟前
基于拥挤距离的多目标粒子群优化算法 (MOPSO-CD)
算法
老鼠只爱大米5 分钟前
LeetCode经典算法面试题 #238:除自身以外数组的乘积(左右乘积数组法、分治法等多种方法详解)
算法·leetcode·分治法·算法面试·除自身以外数组的乘积·前缀乘积·左右乘积数组法
qianbo_insist12 分钟前
Mask R-CNN Fast-ReID 结合
人工智能·算法·cnn
lbb 小魔仙26 分钟前
【Java】基于 Java 的分布式系统实战:分布式锁 + 事务 + 一致性算法,干货满满
java·分布式·算法
朔北之忘 Clancy30 分钟前
第一章 顺序结构程序设计(3)
c++·算法·青少年编程·竞赛·教材·考级·讲义
Ethan-D30 分钟前
每日一题#21 二维 DP + 计数类
java·python·算法·leetcode·动态规划
飞Link33 分钟前
微调阶段中的模型自我提升、通用模型蒸馏和数据扩充
人工智能·算法·数据挖掘
共享家952734 分钟前
力扣刷题之路
算法·leetcode·深度优先
七夜zippoe40 分钟前
Python算法优化实战:时间与空间复杂度的艺术平衡
开发语言·python·算法·贪心算法·动态规划·复杂度