Java 二维数组重组

来源:互联网 发布:网络监控显示不在线 编辑:程序博客网 时间:2024/05/21 21:47

In MATLAB, there is a very useful function called 'reshape', which can reshape a matrix into a new one with different size but keep its original data.

You're given a matrix represented by a two-dimensional array, and two positive integers r and c representing therow number and column number of the wanted reshaped matrix, respectively.

The reshaped matrix need to be filled with all the elements of the original matrix in the samerow-traversing order as they were.

If the 'reshape' operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.

Example 1:

Input: nums = [[1,2], [3,4]]r = 1, c = 4Output: [[1,2,3,4]]Explanation:The row-traversing of nums is [1,2,3,4]. The new reshaped matrix is a 1 * 4 matrix, fill it row by row by using the previous list.

Example 2:

Input: nums = [[1,2], [3,4]]r = 2, c = 4Output: [[1,2], [3,4]]Explanation:There is no way to reshape a 2 * 2 matrix to a 2 * 4 matrix. So output the original matrix.

Note:

  1. The height and width of the given matrix is in range [1, 100].
  2. The given r and c are all positive.


public class Solution {    public int[][] matrixReshape(int[][] nums, int r, int c) {            }}


解决方法:


public int[][] matrixReshape(int[][] nums, int r, int c) {    int n = nums.length, m = nums[0].length;    if (r*c != n*m) return nums;    int[][] res = new int[r][c];    for (int i=0;i<r*c;i++)         res[i/c][i%c] = nums[i/m][i%m];    return res;}



原创粉丝点击