566.重塑矩阵

95 阅读1分钟

题目:
在 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
}