解题思路:
1.创建一个辅助二维数组
2.遍历原数组,把原数组中的数据依次拷贝到辅助数组中
3.当辅助数组的列==c时,表示一行填满,此时需要移动到辅助数组的下一行,同时让新的一行从0开始
代码实现:
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
int rows=nums.length;
int cols=nums[0].length;
if(rows*cols/r!=c){//输出原矩阵
return nums;
}
int[][] res=new int[r][c];
int k=0,p=0;//新数组的行和列索引
for(int i=0;i<rows;++i){
for(int j=0;j<cols;++j){
res[k][p]=nums[i][j];
p++;
if(p>=c){//一行结束
k++;
p=0;
}
}
}
return res;
}
}