题目描述
给定一个矩阵 A
, 返回 A
的转置矩阵。
矩阵的转置是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。
样例
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
注意
1 <= A.length <= 1000
1 <= A[0].length <= 1000
算法
(模拟) $O(nm)$
- 新建一个数组,直接按顺序拷贝即可。
时间复杂度
- 拷贝共需要 $O(nm)$ 的时间。
空间复杂度
- 需要额外的数组存放答案,故空间复杂度为 $O(nm)$。
C++ 代码
class Solution {
public:
vector<vector<int>> transpose(vector<vector<int>>& A) {
int n = A.size(), m = A[0].size();
vector<vector<int>> B(m, vector<int>(n));
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
B[j][i] = A[i][j];
return B;
}
};