📌  相关文章
📜  放大矩阵,使每个元素出现在R行和C列中(1)

📅  最后修改于: 2023-12-03 15:39:53.507000             🧑  作者: Mango

Python函数:放大矩阵

简介

这个Python函数的作用在于将给定的矩阵放大,使得每个元素出现在R行和C列中。如果在R行和C列放大后,矩阵中的元素不足,则在末尾补0。

函数签名
def matrixReshape(nums: List[List[int]], r: int, c: int) -> List[List[int]]:
参数说明
  • nums:要放大的矩阵,类型为List[List[int]]。矩阵中的每个元素大小不会超过1000。
  • r:放大后矩阵的行数,类型为int。
  • c:放大后矩阵的列数,类型为int。
返回值

放大后的矩阵,类型为List[List[int]]。

满足条件的矩阵

当输入的矩阵满足以下条件时,可以被放大:

  • 原始矩阵元素个数($m \times n$)等于放大后矩阵元素个数($r \times c$)。
示例

示例1:

nums = [[1,2],[3,4]]
r = 1
c = 4
matrixReshape(nums, r, c)

输出:

[[1,2,3,4]]

示例2:

nums = [[1,2],[3,4]]
r = 2
c = 4
matrixReshape(nums, r, c)

输出:

[[1,2],[3,4]]
时间复杂度

该函数的时间复杂度为 $O(m \times n)$,m 和 n 分别为原始矩阵的行数和列数。

代码实现
from typing import List

def matrixReshape(nums: List[List[int]], r: int, c: int) -> List[List[int]]:
    m, n = len(nums), len(nums[0])
    if r*c != m*n:
        return nums
    res = [[0] * c for _ in range(r)]
    for i in range(r*c):
        res[i//c][i%c] = nums[i//n][i%n]
    return res