867.转置矩阵

Q

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

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

 

示例 1:

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

示例 2:

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

A

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int[][] transpose(int[][] A) {
//矩阵列,行
int R = A.length, C = A[0].length;
//翻转后的新矩阵
int[][] ans = new int[C][R];
for (int r = 0; r < R; ++r)
for (int c = 0; c < C; ++c) {
ans[c][r] = A[r][c];
}
return ans;
}
}
  • 思路
    转置矩阵就是根据对角线翻转矩阵,行变成列,列变成行。(grd线性代数)
    尺寸为 R x C 的矩阵 A 转置后会得到尺寸为 C x R 的矩阵 ans,对此有 ans[c][r] = A[r][c]。
    初始化一个新的矩阵 ans 来表示答案。然后,复制矩阵的每个条目。

  • 时间复杂度:
    O(R∗C),其中 R 和 C 是给定矩阵 A 的行数和列数。

  • 空间复杂度
    O(R*C),也就是答案所使用的空间。