题目描述
![7ad11e835e3a34f1a695795060145f5a.png](https://i-blog.csdnimg.cn/blog_migrate/e9dabfa74e95af12016bbfc1c548c75e.jpeg)
重构矩阵:给定一个row*col的矩阵,你需要写一个函数将其转换为给定r*c的矩阵。
必要性:源矩阵(sourcrMatrix)的 row*col值要与目的矩阵矩阵(destMatrix)的row*col值相等,不满足必要性直接返回源矩阵即可。
思路1(直接思路):先将二维数组(源矩阵)转换成一维数组,然后将一位数组分成row组即可。但是这样做时间和空间上损耗较大。提交上去会提示Time limit exceeded。
思路2见代码(比较巧妙)
class Solution { public int[][] matrixReshape(int[][] nums, int r, int c) {if (nums.length*nums[0].length!=r*c) return nums;int n=0;//借助变量n直接转换到destMatrixint[][] res=new int[r][c];for (int i = 0; i < nums.length; i++) {for (int j = 0; j < nums[0].length; j++,n++) { // 除c是分成r组(行)。 res[n/c][n%c]=nums[i][j]; } } return res; } }