题目描述:
解题思路:
简单模拟
如果原矩阵的总个数和要求的新矩阵的总个数不一致,那么肯定无法重塑,直接返回原矩阵即可!
如果新矩阵和原矩阵的元素总数是一致的,我们可以将原矩阵逐行遍历取出元素,放入新矩阵的内层数组中,内层数组的长度达到新矩阵的列数时,将内层数组放入外层数组,然后清空内层数组。直到将原矩阵中的元素全部放入新矩阵中。
代码:
class Solution:
def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]:
# 原矩阵行数
m = len(mat)
# 原矩阵列数
n = len(mat[0])
# 不能重塑矩阵
if (m * n) != (r * c):
return mat
else:
i = 0
j = 0
outer_mat = []
inner_mat = []
# 遍历原矩阵
while(i < m):
j = 0
while(j < n):
inner_mat.append(mat[i][j])
# 放入元素够新矩阵的一行了
if len(inner_mat) == c:
# 内层数组放入外层数组中
outer_mat.append(inner_mat)
# 清空内层数组
inner_mat = []
j += 1
i += 1
return outer_mat