1.問題描述:數組
在MATLAB中,有一個很是有用的函數 reshape
,它能夠將一個矩陣重塑爲另外一個大小不一樣的新矩陣,但保留其原始數據。函數
給出一個由二維數組表示的矩陣,以及兩個正整數r
和c
,分別表示想要的重構的矩陣的行數和列數。spa
重構後的矩陣須要將原始矩陣的全部元素以相同的行遍歷順序填充。code
若是具備給定參數的reshape
操做是可行且合理的,則輸出新的重塑矩陣;不然,輸出原始矩陣。blog
示例 1:io
輸入: nums = [[1,2], [3,4]] r = 1, c = 4 輸出: [[1,2,3,4]] 解釋: 行遍歷nums的結果是 [1,2,3,4]。新的矩陣是 1 * 4 矩陣, 用以前的元素值一行一行填充新矩陣。
示例 2:class
輸入: nums = [[1,2], [3,4]] r = 2, c = 4 輸出: [[1,2], [3,4]] 解釋: 沒有辦法將 2 * 2 矩陣轉化爲 2 * 4 矩陣。 因此輸出原矩陣。
注意:重構
2.解決過程:遍歷
class Solution { public: vector<vector<int>> matrixReshape(vector<vector<int>>& nums, int r, int c) { int row=nums.size(); int column=nums[0].size(); if(row*column<r*c) return nums; vector<vector<int>> result(r); for(int i=0,m=0,n=0;i<r;i++) { for(int j=0;j<c;j++) { result[i].push_back(nums[m][n]); if(n<column-1) n++; else { m++; n=0; } } } return result; } };