leetcode-数组篇-转置数组(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:

var transpose = function(A) {
    let result = [];
    for (let i = 0; i < A[0].length; i++) {
        let temp = [];
        for (let j = 0; j < A.length; j++) { 
            temp.push(A[j][i])
        }
        result.push(temp);
    }
    return result;
};

解法2:

转置数组实质上是角码的对调

var transpose2 = function(A) {
    let B = [];
    for(let i in A) {
        for (let j in A[i]) {
            if (!B[j]) {B[j] = [];}
            B[j][i] = A[i][j];
        }
    }
    return B
};

解法3

利用Array.from生成指定长度的空数组

var transpose3 = function(A) {
    const rotateArr = Array.from({ length: A[0].length }, () => [])
    A.forEach((v) => {
        v.forEach((item, idx) => {
            rotateArr[idx].push(item)
        })
    })
    return rotateArr
};

你可能感兴趣的:(leetcode-数组篇-转置数组(867))