携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
本题考察数列相关知识,为简单题566.重塑矩阵
566. 重塑矩阵
题目
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
示例 1:
输入:mat = [[1,2],[3,4]], r = 1, c = 4
输出:[[1,2,3,4]]
示例 2:
输入:mat = [[1,2],[3,4]], r = 2, c = 4
输出:[[1,2],[3,4]]
提示:
m == mat.length
n == mat[i].length
1 <= m, n <= 100
-1000 <= mat[i][j] <= 1000
1 <= r, c <= 300
代码
class Solution:
def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]:
if len(mat) * len(mat[0]) != r * c:
return mat
result = []
row = []
for words in mat:
for word in words:
row.append(word)
if len(row) == c:
result.append(row)
row = []
return result
解析
这道题很简单啊,就是把原矩阵遍历一下生成新矩阵
具体方法:
1.用原矩阵的行列数计算原矩阵元素个数和新矩阵元素个数作比较,相同则继续,不同直接结束
2.定义两个数组row和result,row用来暂时存放新数组的行,result存放新矩阵
3.两个for循环读入原来矩阵的元素,同时保存到row里,当row的元素满一行之后,存入result然后清空row
4.result就是新矩阵,输出即可
来源:力扣(LeetCode) 链接:leetcode.cn/problems/re… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。