【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…