1. 程式人生 > >java仿照MATLAB中的reshape,實現矩陣重塑

java仿照MATLAB中的reshape,實現矩陣重塑

在MATLAB中,有一個非常有用的函式 reshape,它可以將一個矩陣重塑為另一個大小不同的新矩陣,但保留其原始資料。
給出一個由二維陣列表示的矩陣,以及兩個正整數r和c,分別表示想要的重構的矩陣的行數和列數。
重構後的矩陣需要將原始矩陣的所有元素以相同的行遍歷順序填充。
如果具有給定引數的reshape操作是可行且合理的,則輸出新的重塑矩陣;否則,輸出原始矩陣。

這裡寫圖片描述

public static int[][] matrixReshape(int[][] nums, int r, int c) {
        if(nums == null){
            return
nums; } if(r == 0 || c == 0){ return nums; } int row = 0;//行 int columns = 0;//列 columns = nums[0].length; row = nums.length; if(columns > 100 || row > 100 || columns < 1 || row < 1){ return nums; } if
(columns * row < r * c){ return nums; } int [][]result = new int[r][c]; int rr = 0; int cc = 0; int index = 0; for(int i = 0; i < row; i ++){ for(int j = 0; j < columns; j ++){ index = i * columns + j + 1; if
(index > r * c){ break; } rr = index / c;//行 cc = index % c;//列 if(rr > 0 && cc ==0){ rr = rr -1; cc = c - 1; }else if(rr > 0 && cc > 0){ cc = cc -1; }else{ cc = cc -1; } result[rr][cc] = nums[i][j]; } } return result; }