欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[数组][简单]867.转置矩阵

程序员文章站 2024-03-22 11:46:28
...

tags:

  • 简单
  • 参考
  • 数组
    flag: green
    data: ‘2019-6-10’

867.转置矩阵

一、题目:

给定一个矩阵 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]]

  • 提示:

    • 1 <= A.length <= 1000
    • 1 <= A[0].length <= 1000

二、解答:

方法:直接复制
思路和算法

尺寸为 R x C 的矩阵 A 转置后会得到尺寸为 C x R 的矩阵 ans,对此有 ans[c][r] = A[r][c]

让我们初始化一个新的矩阵 ans 来表示答案。然后,我们将酌情复制矩阵的每个条目。

JavaPython
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;
    }
}

  • 复杂度分析
    时间复杂度:O(R * C)O(R∗C),其中 RR 和 CC 是给定矩阵 A 的行数和列数。
    空间复杂度:O(R * C)O(R∗C),也就是答案所使用的空间。

作者:LeetCode
链接:https://leetcode-cn.com/problems/two-sum/solution/zhuan-zhi-ju-zhen-by-leetcode/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 自我解法:
class Solution {
    public int[][] transpose(int[][] A) {
        int N = A.length;
        int M = A[0].length;
        int[][] B = new int[M][N];
        for (int i = 0; i < B.length; i++) {
            for (int j = 0; j < B[0].length; j++ ) {
                B[i][j] = A[j][i];
            }
        }
        return B;
    }
}

执行用时 :2 ms, 在所有Java提交中击败了59.00%的用户

内存消耗 :48.6 MB, 在所有Java提交中击败了63.98%的用户