leetcode867--矩阵转置

给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。

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

 

 

 

示例 1:

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

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

提示:

m == matrix.length
n == matrix[i].length
1 <= m, n <= 1000
1 <= m * n <= 105
-109 <= matrix[i][j] <= 109

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


 

  开始的想法是直接通过[i][j]进行调换[j][i]位的数就行了,后来发现给的是数组,有可能不是矩阵,因此不能这么简单。因此接下来的思路就是将列变换为行。

 1 class Solution:
 2     def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
 3         row_len = len(matrix)
 4         cl_len = len(matrix[0])
 5         ls = []
 6         # 按列存数字
 7         for j in range(cl_len):
 8             for i in range(row_len):
 9                 ls.append(matrix[i][j])
10         result=[]
11         # 按列摆放
12         for i in range(cl_len*row_len):
13             if i % row_len == 0:
14                 result.append(ls[i:i+row_len])
15             
16         return result

 

 结果的速度还是很不错的,但是空间复杂度还是不太行。

posted @ 2021-02-25 09:43  ASTHNONT  阅读(117)  评论(0编辑  收藏  举报