题目:
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
解法:
func matrixReshape(mat [][]int, r int, c int) [][]int {
ans := make([][]int, r)
for i := 0; i < r; i ++ {
ans[i] = make([]int, c)
}
n, m := len(mat), len(mat[0])
if n * m != r * c {
return mat
}
row, col := 0, 0
for i := 0; i < n; i ++ {
for j := 0; j < m; j ++ {
ans[row][col] = mat[i][j]
col ++
if col == c {
row ++
col =0
}
}
}
return ans
}