一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第7天,点击查看活动详情。
在 MATLAB 中,有一个非常有用的函数 reshape ,它可以将一个 m x n 矩阵重塑为另一个大小不同(r x c)的新矩阵,但保留其原始数据。
给你一个由二维数组 mat 表示的 m x n 矩阵,以及两个正整数 r 和 c ,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的 行遍历顺序 填充。
如果具有给定参数的 reshape 操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。

输入:mat = [[1,2],[3,4]], r = 1, c = 4
输出:[[1,2,3,4]]
输入: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
[1]、直接法
直接想直接做就行,难就难在初始化数组vector<vector>res(r,vector(c,0));这个部分其他不难
class Solution {public: vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) { int m=mat.size(); int n=mat[0].size(); int row=0; int col=0; vector<vector<int>>res(r,vector<int>(c,0));//因为数组可以通过[]访问,所以先限定大小在挨个填充即可 if(r*c!=m*n) return mat; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(col==c){ row++; col=0; } res[row][col]=mat[i][j]; col++; } } return res; }};