leetcode867-转置矩阵

给定一个矩阵 A, 返回 A 的转置矩阵。

矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。

示例 1:

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

解法一:初始化一个新的矩阵来保存答案。尺寸为 R x C 的矩阵 A 转置后会得到尺寸为 C x R 的矩阵 ans,对此有 ans[c][r] = A[r][c]

class Solution(object):
    def transpose(self, A):
        R, C = len(A), len(A[0])
        ans = [[None] * R for _ in xrange(C)]
        for r, row in enumerate(A):
            for c, val in enumerate(row):
                ans[c][r] = val
        return ans

解法二:不需要额外的空间,直接原地进行转置。

注意:1.是c++中的swap()操作,python中没有swap()函数,直接是a,b=b,a进行交换

           2.此方法适用于至少是2*2的数值,若是1*2或者2*1的数组则会出错,因为A[i][j],A[j][i]时数组索引越界了。

class Solution:
    def transpose(self, A: List[List[int]]) -> List[List[int]]:
        for i in range(len(A)):
            for j in range(i):
                A[i][j],A[j][i]=A[j][i],A[i][j] #swap操作,而不是简单的A[i][j]=A[j][i]
        return A
        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值