英文原文
Given a 2D integer array matrix
, return the transpose of matrix
.
The transpose of a matrix is the matrix flipped over its main diagonal, switching the matrix's row and column indices.
Example 1:
Input: matrix = [[1,2,3],[4,5,6],[7,8,9]] Output: [[1,4,7],[2,5,8],[3,6,9]]
Example 2:
Input: matrix = [[1,2,3],[4,5,6]] Output: [[1,4],[2,5],[3,6]]
Constraints:
m == matrix.length
n == matrix[i].length
1 <= m, n <= 1000
1 <= m * n <= 105
-109 <= matrix[i][j] <= 109
中文题目
给你一个二维整数数组 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
通过代码
高赞题解
各位题友大家好! 今天是 @负雪明烛 坚持日更的第 32 天。今天力扣上的每日一题是「867. 转置矩阵」。
解题思路
正如题目给出的示例图所描述的,转置矩阵就是把 $M$ 行 $N$ 列的矩阵,转成 $N$ 行 $M$ 列的矩阵,原来矩阵中 $matrix[i][j]$ 的位置,会交换到新矩阵的 $res[j][i]$ 位置。
{:width=”500px”}
注意:本题的矩阵的行列数可能不等,因此不能做原地操作,需要新建数组。
代码
Python, C++, Java 语言的代码如下:
class Solution:
def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
M, N = len(matrix), len(matrix[0])
res = [[0] * M for i in range(N)]
for i in range(M):
for j in range(N):
res[j][i] = matrix[i][j]
return res
class Solution {
public:
vector<vector<int>> transpose(vector<vector<int>>& matrix) {
int M = matrix.size();
int N = matrix[0].size();
vector<vector<int>> res(N, vector<int>(M, 0));
for (int i = 0; i < M; ++i) {
for (int j = 0; j < N; ++j) {
res[j][i] = matrix[i][j];
}
}
return res;
}
};
class Solution {
public int[][] transpose(int[][] matrix) {
int M = matrix.length;
int 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;
}
}
- 时间复杂度:$O(M * N)$
- 空间复杂度:$O(1)$,返回结果不算在空间复杂度内。
彩蛋:Python 可以使用 numpy 的 transpose
函数,直接对矩阵转置。
class Solution:
def transpose(self, matrix: List[List[int]]) -> List[List[int]]:
import numpy as np
return np.transpose(matrix).tolist()
刷题心得
本题比较简单,直接重拳出击。
OK,以上就是 @负雪明烛 写的今天题解的全部内容了,如果你觉得有帮助的话,求赞、求关注、求收藏。如果有疑问的话,请在下面评论,我会及时解答。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。
祝大家牛年大吉!AC 多多,Offer 多多!我们明天再见!
统计信息
通过次数 | 提交次数 | AC比率 |
---|---|---|
85132 | 127204 | 66.9% |
提交历史
提交时间 | 提交结果 | 执行时间 | 内存消耗 | 语言 |
---|