方法1:
class Solution(object):
def matrixReshape(self, nums, r, c):
"""
:type nums: List[List[int]]
:type r: int
:type c: int
:rtype: List[List[int]]
"""
len_1 = len(nums[0])
len_2 = len(nums)
count = len_1*len_2
s = []
ii = 0
for i in range(0,len_2):
for j in range(0,len_1):
s.append(nums[i][j])
if count < (r*c):
return nums
else:
num1 = [([None] * c) for i in range(r)]
for i in range(0,r):
for j in range(0,c):
num1[i][j] = s[ii]
ii +=1
return num1
Sol = Solution()
num_test = [[1,2],[3,4]]
print Sol.matrixReshape(num_test,1,4)
方法2:
def matrixReshape(self, A, r, c):
if len(A) * len(A[0]) != r * c:
return A
vals = [val for row in A for val in row]
ans = [[None] * c for i in range(r)]
i = 0
for r in range(r):
for c in range(r):
ans[r][c] = vals[i]
i += 1
return ans
0,第二种方法相对简单
1,这两种方法的思想是相类似的,但是方法2更为简洁。首先:
vals = [val for row in A for val in row],可以将一个二维数组转化为一个列表。
val = [[1,2],[3,4]]
vals = [val for row in val for val in row]
print vals
输出为[1,2,3,4]
其次,ans = [[None] * c for i in range(r)],创建一个r*c的二维矩阵,元素为[None]型,也可以换成其他值。