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     }

 

posted @ 2019-11-21 21:21  les111ley  阅读(177)  评论(0)    收藏  举报