LeetCode 867. Transpose Matrix 转

2018-08-23  本文已影响0人  singed

链接

https://leetcode-cn.com/problems/transpose-matrix/description/

要求

给定一个矩阵 A, 返回 A 的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]

输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]

相关代码

  1. 切片
class Solution(object):
    def transpose(self, A):
        ans1 = []
        ans2 = []
        for i in A:
            ans1 += i
        for j,k in enumerate(A[0]):
            ans2.append(ans1[j::len(A[0])])
        return ans2
  1. map + zip
    这个方法在做checkio的题的时候已经见过 所以不是自己解出来的
class Solution(object):
    def transpose(self, A):
        return map(list,zip(*A))

两种解法效率上完全相同。

心得体会

zip(*A)的结果和zip()相反

A = [1,2,3]
B = [4,5,6]
C = zip(A,B)
D = zip(*C)

print C
print D

print结果依次为
[(1, 4), (2, 5), (3, 6)]
[(1, 2, 3), (4, 5, 6)]

上一篇 下一篇

猜你喜欢

热点阅读