1. 程式人生 > >566-重塑矩陣

566-重塑矩陣

int new nbsp 有一個 遍歷 span turn add arr

在MATLAB中,有一個非常有用的函數 reshape,它可以將一個矩陣重塑為另一個大小不同的新矩陣,但保留其原始數據。給出一個由二維數組表示的矩陣,以及兩個正整數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: 輸入: nums = [[1,2], [3,4]] r = 2, c = 4 輸出: [[1,2], [3,4]] 解釋: 沒有辦法將 2 * 2 矩陣轉化為 2 * 4 矩陣。 所以輸出原矩陣。 註意: 給定矩陣的寬和高範圍在 [1, 100]。 給定的 r 和 c 都是正數。 public static int[][] matrixReshape(int[][] nums, int r, int c) { int [][]A=new int[r][c]; int length=nums[0].length*nums.length;
if (length!=r*c) return nums; List<Integer> list=new ArrayList<>(); for (int i=0;i<nums.length;i++) { for (int j=0;j<nums[0].length;j++) { list.add(nums[i][j]); } } for (int
i=0;i<r;i++) { for (int j=0;j<c;j++) { A[i][j]=list.get(i*c+j); } } return A; }

566-重塑矩陣