每天一道编程题(Javascript)

【LeetCode】868. 转置矩阵

给定一个矩阵 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]]复制代码

=====================================================================

思路:

根据题目的意思,形象点把数据倒置的结果画出来,基本就OK了;

1. 二维数据中的每个元素长度相同,根据元素长度进行遍历;

2.再根据每个元素下标按列的顺序把元素重组;

/**
 * @param {number[][]} A
 * @return {number[][]}
 */
var transpose = function(A) {
    let result = []
    for(let i = 0; i < A[0].length; i++) {
        let item = []
        for(let j = 0; j < A.length; j++) {
            item.push(A[j][i])
        }
        result.push(item)
    }
    return result 
};
复制代码

这道题比较简单,我根据思路使用了2个for循环就写好了,不过时间复杂度就比较大;使用for循环实现的方式,目前应该都有更好的内置api实现了。

使用forEach代替for,实现如下

/**
 * @param {number[][]} A
 * @return {number[][]}
 */var transpose2 = function(A){
  let result = []
  A[0].forEach((cur, i, arr) => {
    let item = []
    A.forEach((cur, j, arr) => {
      item.push(A[j][i])
    })
    result.push(item)
  })
  return result
}
复制代码


具体代码 codepen.io/minhuaf/pen…


转载于:https://juejin.im/post/5b421bdb6fb9a04f9764ef24

你可能感兴趣的:(每天一道编程题(Javascript))