加载中...
867-转置矩阵(Transpose Matrix)
发表于:2021-12-03 | 分类: 简单
字数统计: 225 | 阅读时长: 1分钟 | 阅读量:

原文链接: https://leetcode-cn.com/problems/transpose-matrix

英文原文

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%

提交历史

提交时间 提交结果 执行时间 内存消耗 语言
上一篇:
866-回文素数(Prime Palindrome)
下一篇:
868-二进制间距(Binary Gap)
本文目录
本文目录