# 转置矩阵(867)
# 题目
给定一个矩阵 A, 返回 A 的转置矩阵。
# 示例
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:[[1,4,7],[2,5,8],[3,6,9]]
输入:[[1,2,3],[4,5,6]]
输出:[[1,4],[2,5],[3,6]]
# 算法
# 双循环一
当给B[0][0]
第一次赋值时,需要将B[0]
设为[]
function transpose(A) {
let B = []
for(let i = 0; i < A.length; i++) {
for(let j = 0; j < A[i].length; j++) {
if (!B[j]) B[j] = []
B[j][i] = A[i][j]
}
}
return B
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 双循环二
初始化一个j*i
的空数组,需要注意不能使用new Array(A[0].length).fill(new Array(A.length))
初始化B,这样数组B的第一维的数组都是同一个引用,当B[0][0] = 1
时,B[1][0] === 1
function transpose(A) {
let B = new Array(A[0].length).fill(0).map(item=>[])
for(let i = 0; i < A.length; i++) {
for(let j = 0; j < A[i].length; j++) {
B[j].push(A[i][j])
}
}
return B
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9