您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# LeetCode如何实现转置矩阵
## 什么是矩阵转置
矩阵转置是线性代数中的基础操作,指将矩阵的行列互换得到的新矩阵。对于一个 m×n 的矩阵 A,其转置矩阵 AT 是一个 n×m 的矩阵,满足 AT[j][i] = A[i][j]。
示例:
原始矩阵: 1 2 3 4 5 6
转置矩阵: 1 4 2 5 3 6
## LeetCode题目描述
LeetCode第867题"转置矩阵"要求:
给定一个二维整数数组 matrix,返回 matrix 的转置矩阵。
注意:
- 转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引
- 1 <= matrix.length <= 1000
- 1 <= matrix[0].length <= 1000
## 基础解法
### Python实现
```python
def transpose(matrix):
return list(zip(*matrix))
public int[][] transpose(int[][] matrix) {
int m = matrix.length, n = matrix[0].length;
int[][] res = new int[n][m];
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
res[j][i] = matrix[i][j];
return res;
}
当矩阵为方阵(n×n)时,可以原地转置:
def transpose_inplace(matrix):
n = len(matrix)
for i in range(n):
for j in range(i+1, n):
matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j]
对于非方阵,可以使用一维数组存储:
def transpose_optimized(matrix):
m, n = len(matrix), len(matrix[0])
flat = [num for row in matrix for num in row]
return [flat[i::n] for i in range(n)]
方法 | 时间复杂度 | 空间复杂度 |
---|---|---|
基础解法 | O(mn) | O(mn) |
原地转置 | O(n²) | O(1) |
空间优化 | O(mn) | O(mn) |
实际编码时需要考虑: 1. 空矩阵输入 2. 单行/单列矩阵 3. 非矩形矩阵(题目中已保证输入合法)
矩阵转置在以下领域有重要应用: 1. 图像处理(旋转操作) 2. 机器学习(特征变换) 3. 科学计算(线性方程组求解) 4. 数据库操作(行列转换)
矩阵转置看似简单,但包含了重要的编程思维: 1. 行列索引的对应关系 2. 不同语言的多维数组处理差异 3. 时间和空间的取舍
通过这道题目,我们可以掌握: - 基本的双重循环操作 - 列表推导式的灵活运用 - 原地算法设计思想
建议初学者先理解数学定义,再动手编码,最后尝试优化解法。对于想深入学习的同学,可以研究Strassen算法等高级矩阵操作方法。
提示:在面试中可能会被要求不适用额外空间完成方阵转置,或者被问及转置运算的数学性质(如(AB)ᵀ = BᵀAᵀ等性质)。 “`
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。