将原来数组用新的数组代替,新数组行列确定,而且对应新数组的元素顺序应该与原来数组顺序一致
- 求出原来数组的行列,行为nums.length,列为nums[0].length;
- 如果要求生成的新数组与原来数组元素个数不一致,返回原来数组
- 否则,将原来数组的元素一个个的按照顺序,赋值给新数组,每次赋值,新数组列+1,当列数==规定的列数,行数+1;返回新数组
public int[][] matrixReshape(int[][] nums, int r, int c) {
if(r * c != nums.length * nums[0].length){
return nums;
}
int[][] num = new int[r][c];
for(int i = 0; i < r * c; i++){
num[i/c][i%c] = nums[i/nums[0].length][i%nums[0].length];//i/c表示所在的行数,i%c表示所在的列数
}
return num;
}
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
int m=nums.length;//numbers one row have
int n=nums[0].length;//numbers one column have
if(m*n!=r*c){
return nums;
}
int result[][]=new int[r][c];//create new matrix
int row=0,col=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
result[row][col]=nums[i][j];//give data to new matrix
col++;//everytime column++
if(col==c)//if data in one row up to c ,row++
row++;
}
}
return result;
}
}