给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
示例 1:
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
示例 2:
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
提示:
1 <= A.length <= 1000
1 <= A[0].length <= 1000
思路1:
类C。创建一个新矩阵,逐一填入即可。
代码1:
class Solution:
def transpose(self, A):
"""
:type A: List[List[int]]
:rtype: List[List[int]]
"""
m=len(A)
n=len(A[0])
res=[[None for j in range(m)] for i in range(n)]
for i in range(n):
for j in range(m):
res[i][j]=A[j][i]
return res
分析:
时间复杂度O(n^ 2), 空间复杂度O(n^2)
思路2:
Pythonic思路。使用map函数和zip函数。
代码2:
class Solution:
def transpose(self, A):
"""
:type A: List[List[int]]
:rtype: List[List[int]]
"""
A[:]=map(list,zip(*A))
return A
分析:
使用内置高级函数较快。
参考:
zip()函数用法:http://www.runoob.com/python/python-func-zip.html