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

原题

一、坐标转换

class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        l = len(original)
        res = []    #结果矩阵
        if l != m * n:
            return res
        for i in range(m):
            line = [0] * n      #每行
            for j in range(n):
                line[j] = original[i * n + j]
            res.append(line)
        return res

优化

不用每次都计算坐标转换,因为二维数组顺序遍历的结果就是一维数组,直接用一个全局计数器即可

class Solution:
    def construct2DArray(self, original: List[int], m: int, n: int) -> List[List[int]]:
        l = len(original)
        res = [[0] * n for _ in range(m)]    #结果矩阵
        if l != m * n:
            return []
        idx = 0
        for i in range(m):
            for j in range(n):
                res[i][j] = original[idx]
                idx += 1
        return res

最后更新于