将m*n的矩阵转换成r*c的矩阵:所以他们之间元素个数必定相等,即m*n=r*c;
可以将这俩个二维数组想象为一个元素等长的一维数组,从一位数组中每次取n个就组成了二维数组m*n;每次取c个就组成了二维数组r*c;所以两个数组的元素下标将会有如下关系;
用mat1即为m*n数组;mat2为r*c;
mat2[i][j]=mat1[((i*c+j)/n)][((i*c+j)%n)];
故重塑完成!
class Solution {
public:
vector<vector<int>> matrixReshape(vector<vector<int>>& mat, int r, int c) {
int m =mat.size();
int n =mat[0].size();
if(r*c!=n*m){
return mat;
}
else{
vector<vector<int>> mat2(r);//创建一个vector的二维数组;
for(int i=0;i<mat2.size();i++){
mat2[i].resize(c);
}//r*c
for(int i=0;i<r;i++){
for(int j=0;j<c;j++){
mat2[i][j]=mat[((i*c+j)/n)][((i*c+j)%n)];
}
}
return mat2;
}
}
};