我使用多项式O(n ^ 2)运行时来查找全1。然而,如果我的2维变得非常大,这种方法会受到影响。它会耗费时间。应该使用什么算法,你能重构代码吗?
function findAllOnes(input) {
var s = '';
locationsOfOnes = [];
for (var y = 0; y < input.length; y++) {
s = '';
for (var x = 0; x < input[0].length; x++) {
s = s + input[y][x].toString(); // this is just for output to show it in 2 dimensional view
if (input[y][x] !== 0) {
locationsOfOnes.push({x: x, y: y})
}
}
console.log(y.toString() + '.)', s)
}
return locationsOfOnes;
}
您可以使用此实时工作代码 - https://jsfiddle.net/tLpa1f3s/
答案 0 :(得分:2)
我不认为这可以比O(n ^ 2)更好地完成,因为你必须至少遍历一次数组以获得值等于1的位置。