zoukankan      html  css  js  c++  java
  • 867. 转置矩阵

    给定一个矩阵 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

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/transpose-matrix

    一开始分3种情况,

    class Solution:
        def transpose(self, A: List[List[int]]) -> List[List[int]]:
            n,m=len(A),len(A[0])
            if n==m:
                for i in range(len(A)):
                    for j in range(len(A)):
                        if j>i:
                            A[i][j],A[j][i]=A[j][i],A[i][j]
                return A
            elif n<m:
                B=[[] for _ in range(m)]
                for i in range(m-1,-1,-1):
                    for j in range(n):
                        B[m-i-1].append(A[j][i])
                B.reverse()
                return B
            else:
                B=[[] for _ in range(m)]
                for i in range(m-1,-1,-1):
                    for j in range(n):
                        B[m-i-1].append(A[j][i])
                B.reverse()
                return B
    
            

    写完发现后面两种是一样的

    class Solution:
        def transpose(self, A: List[List[int]]) -> List[List[int]]:
            n,m=len(A),len(A[0])
            if n==m:
                for i in range(len(A)):
                    for j in range(len(A)):
                        if j>i:
                            A[i][j],A[j][i]=A[j][i],A[i][j]
                return A
            else:
                B=[[] for _ in range(m)]
                for i in range(m-1,-1,-1):
                    for j in range(n):
                        B[m-i-1].append(A[j][i])
                B.reverse()
                return B
    
            

     空间效率还可以。。。

    后来我果断猜想所有情况都可以划为一种

    class Solution:
        def transpose(self, A: List[List[int]]) -> List[List[int]]:
            n,m=len(A),len(A[0])
            B=[[] for _ in range(m)]
            for i in range(m-1,-1,-1):
                for j in range(n):
                    B[m-i-1].append(A[j][i])
            B.reverse()
            return B
    

     还真的可以。。

    看了一下题解,果然又是一堆骚操作

    class Solution:
        def transpose(self, A: List[List[int]]) -> List[List[int]]:
            return [list(i) for i in zip(*A)]
  • 相关阅读:
    APP性能测试-客户端性能测试
    postman——预处理和断言
    postman——token传参
    postman——环境变量
    postman——请求与相应
    postman——下载与安装
    HP LoadRunner 11.00安装+破解+汉化
    Fiddler使用 抓取手机数据包及中文乱码解决方案
    性能测试常见面试题(Loadrunner)
    python3 selenium3 POM设计模式 【比较全的使用邮件自动发送测试报告】
  • 原文地址:https://www.cnblogs.com/xxxsans/p/13501348.html
Copyright © 2011-2022 走看看