LeetCode#566 Reshape the Matrix

2017-08-27
程式解題/ LeetCode

問題

給定一個二維的矩陣以及正整數 r 與 c ,將此矩陣轉為 r * c 的矩陣。
若無法轉換,則輸出原本的矩陣。 ## 輸入 ## nums = [[1,2], [3,4]] r = 1, c = 4 ## 輸出 ## [[1,2,3,4]] ## 方法 ## 檢查兩個矩陣的行數與列數相乘的結果是否相同,若成立代表這兩個矩陣的元素個數相同,也就是兩個矩陣能夠互相轉換。
接著將原本 2D 的矩陣轉成 1D ,這樣在轉換成另一個大小的矩陣時會比較方便,只要依序取出即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution(object):
def matrixReshape(self, nums, r, c):
row = len(nums)
col = len(nums[0])
if row * col == r * c:
one_d_array = [nums[i][j] for i in range(row) for j in range(col)]
ans = [[0 for j in range(c)] for i in range(r)]
count_element = 0
for i in range(r):
for j in range(c):
ans[i][j] = one_d_array[count_element]
count_element += 1
return ans
return nums