各位题友大家好! 今天是 @负雪明烛 坚持日更的第 32 天。今天力扣上的每日一题是「867. 转置矩阵」。
解题思路
正如题目给出的示例图所描述的,转置矩阵就是把 $M$ 行 $N$ 列的矩阵,转成 $N$ 行 $M$ 列的矩阵,原来矩阵中 $matrix[i][j]$ 的位置,会交换到新矩阵的 $res[j][i]$ 位置。

注意:本题的矩阵的行列数可能不等,因此不能做原地操作,需要新建数组。
代码
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 npreturn np.transpose(matrix).tolist()
刷题心得
本题比较简单,直接重拳出击。
OK,以上就是 @负雪明烛 写的今天题解的全部内容了,如果你觉得有帮助的话,求赞、求关注、求收藏。如果有疑问的话,请在下面评论,我会及时解答。
关注我,你将不会错过我的精彩动画题解、面试题分享、组队刷题活动,进入主页 @负雪明烛 右侧有刷题组织,从此刷题不再孤单。
祝大家牛年大吉!AC 多多,Offer 多多!我们明天再见!
