难度简单
在MATLAB中,有一个非常有用的函数 reshape
,它可以将一个矩阵重塑为另一个大小不同的新矩阵,但保留其原始数据。
给出一个由二维数组表示的矩阵,以及两个正整数r
和c
,分别表示想要的重构的矩阵的行数和列数。
重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。
如果具有给定参数的reshape
操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
思路:
创建对应尺寸的矩阵,按行遍历原矩阵并填充新矩阵。
vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) {
int len_x=nums.size(),len_y=nums[0].size();
if(len_x * len_y != r * c) return nums;
vector<vector<int>> ans(r,vector<int>(c,0));
int i=0,j=0;
for(auto& idx:nums){
for(auto& idy:idx){
ans[i][j]=idy;
if(++j>=c) {
j=0;i++;
}
}
}
return ans;
}