类别:数组 二维数组变换
题目:
法一:
想法:存到一维数组里,再导入新二维数组
代码:
class Solution {
public int[][] matrixReshape(int[][] mat, int r, int c) {
int[][] newmat= new int[r][c];
int m = mat.length;
int n = mat[0].length;
if(m*n != r*c){
return mat;
}else{
int[] temp = new int[m*n];
int i,j;
int k=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
temp[k]=mat[i][j];
k++;
}
}
k=0;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
newmat[i][j]=temp[k];
k++;
}
}
return newmat;
}
}
}
结果:
法二:
想法:不借助一维矩阵,直接遍历原数组导入新数组。
代码:
class Solution {
public int[][] matrixReshape(int[][] mat, int r, int c) {
int[][] newmat= new int[r][c];
int m = mat.length;
int n = mat[0].length;
if(m*n != r*c){
return mat;
}else{
int[] temp = new int[m*n];
int i,j,a,b;
a=0;
b=0;
for(i=0;i<r;i++){
for(j=0;j<c;j++){
if(a<m && b<n){
newmat[i][j]=mat[a][b];
if(b<n){
b++;
if(b==n){
b=0;
if(a<m){
a++;
}
}
}
}
}
}
return newmat;
}
}
}
结果: