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
结果的速度还是很不错的,但是空间复杂度还是不太行。