在MATLAB中,有一個很是有用的函數 reshape
,它能夠將一個矩陣重塑爲另外一個大小不一樣的新矩陣,但保留其原始數據。數組
給出一個由二維數組表示的矩陣,以及兩個正整數r
和c
,分別表示想要的重構的矩陣的行數和列數。app
重構後的矩陣須要將原始矩陣的全部元素以相同的行遍歷順序填充。函數
若是具備給定參數的reshape
操做是可行且合理的,則輸出新的重塑矩陣;不然,輸出原始矩陣。code
示例 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 矩陣。 因此輸出原矩陣。
注意:重構
思路:重塑矩陣先後元素個數相同,下面是Python解題代碼。List
class Solution: def matrixReshape(self, nums, r, c): """ :type nums: List[List[int]] :type r: int :type c: int :rtype: List[List[int]] """ rr = len(nums) cc = len(nums[0]) retl = [] if rr * cc < r * c: return nums else: t = [] for i in range(rr): for j in range(cc): t.append(nums[i][j]) m = 0 for i in range(r): retl.append(t[m:m + c]) m += c return retl