解法一:
class Solution {
public int[][] matrixReshape(int[][] nums, int r, int c) {
//首先判断能不能重塑矩阵
if(nums.length == 0) return nums;
int row = nums.length;//代表原矩阵的行数
int col = nums[0].length;//代表原矩阵的列数,因为原二维数组代表的是矩阵,所以二维数组的第二维的长度都是相同的
if(row * col != r * c) return nums;
int[][] res = new int[r][c];
int count = 1;//用一个count来计数,矩阵转换后元素个数是不变的,通过count算出原数组对应的位置
for(int i = 0; i < res.length; i++){
for(int j = 0; j < res[0].length; j++){
//计算当前的count应该对应原数组中的哪一个数
//[[1,2],
// [3,4]] 观察这个
int numsI = 0;
int numsJ = 0;
if(count % col == 0){
numsJ = col - 1;
numsI = count / col - 1;
} else{
numsJ = count % col - 1;
numsI = count / col;
}
//System.out.println("numsI:" + numsI + " numsJ:" + numsJ);
res[i][j] = nums[numsI][numsJ];
count++;//不要忘了递增count
}
}
return res;
}
}
本文介绍了一种矩阵重塑算法的实现方法。该算法可以将输入的矩阵按照指定的行数和列数进行重塑,并确保元素的顺序不变。文章详细解释了算法的工作原理及其实现过程。

被折叠的 条评论
为什么被折叠?



