566. 重塑矩阵
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
此题解法:
1.先将原始的矩阵嵌套列表全展开成一个大列表。
2.然后判断该大列表能否转换成目标矩阵列表,判断依据为:大列表的长度是否等于目标矩阵列表的行数*目标矩阵列表的列数。如果不等则输出原始矩阵列表。
3.如果等于则将大列表以目标矩阵的列数c为步长进行划分,划分后添加到一个新列表中返回即可。
class Solution:
def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]:
mats=[]
mat1=[]
for i in range(len(mat)):
for j in range(len(mat[0])):
mats.append(mat[i][j])
if r!=len(mats)/c:
return mat
else:
for i in range(0,len(mats),c):
mat1.append(mats[i:i+c])
return mat1