gpt4 book ai didi

javascript - 将列矩阵中的所有零移动到末尾

转载 作者:行者123 更新时间:2023-11-29 18:39:06 25 4
gpt4 key购买 nike

我有以下矩阵

var matrix = [
[2, 0, 0, 2],
[4, 0, 0, 2],
[2, 64, 32, 4],
[1024, 1024, 64, 0]
];

而且我想将第一行和第二行的第二列和第三列的零移到末尾,但我不知道该怎么做。这是我的尝试:

for(var i = 0; i < matrix.length; i++) {
for(var j = 0; j < matrix.length ;j++) {
//push zeroes to the end
if(matrix[j][i] === 0){
for(var k = j+1; k<2;k++){
matrix[j][i] = matrix[k][i]
}
matrix[3][i] = 0
}
}
}

这是它返回的结果与我的预期:

Returns:  [[2, 0,  0,  2], [4, 0,    0,  2], [2, 64, 32, 4], [1024, 0, 0, 0]]
Expected: [[2, 64, 32, 2], [4, 1024, 64, 2], [2, 0, 0, 4], [1024, 0, 0, 0]]

如果有任何帮助,我将不胜感激

最佳答案

要在每一列上移动零,您可以转置矩阵,移动每一行并将其转回:

let zip = a => a[0].map((_, i) => a.map(b => b[i]))

let shiftZeros = a => a.filter(x => x).concat(a.filter(x => !x))

//

let matrix = [
[2, 0, 0, 2],
[4, 0, 0, 2],
[2, 64, 32, 4],
[1024, 1024, 64, 0]
];

result = zip(zip(matrix).map(shiftZeros))

console.log(result.map(x => x.join()))

关于javascript - 将列矩阵中的所有零移动到末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58550030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com