leetcode.矩阵.566重塑矩阵-Java
1. 具体题目
给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数。重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充。如果具有给定参数的reshape操作是可行且合理的,则输出新的重塑矩阵;否则,输出原始矩阵。
示例 1: 输入: nums = [[1,2], [3,4]] r = 1, c = 4 输出: [[1,2,3,4]] 解释: 行遍历nums的结果是 [1,2,3,4]。新的矩阵是 1 * 4 矩阵, 用之前的元素值一行一行填充新矩阵。
2. 思路分析
没有简便算法,只能将原矩阵中元素依次填入新矩阵中。对于新矩阵的行和列设置两层 for 循环,对于原矩阵,填入时通过索引判断是否需要换行。
3. 代码
1 public int[][] matrixReshape(int[][] nums, int r, int c) { 2 int n = nums.length; 3 int m = nums[0].length; 4 if(n * m != r * c) return nums; 5 n = 0; m = 0; 6 int[][] ans = new int[r][c]; 7 for(int i = 0; i < r; i++){ 8 for(int j = 0; j < c; j++){ 9 ans[i][j] = nums[n][m]; 10 m++; 11 if(m == nums[0].length){ 12 m = 0; 13 n++; 14 } 15 } 16 } 17 return ans; 18 }

浙公网安备 33010602011771号