使用javascript在二维数组中查找元素的最有效方法

使用javascript在二维数组中查找元素的最有效方法,javascript,arrays,big-o,Javascript,Arrays,Big O,我使用多项式O(n^2)运行时来查找所有1。然而,如果我的二维空间变大,这种方法将受到影响。它会消耗时间的。应该使用什么算法,你能重构代码吗 function findAllOnes(input) { var s = ''; locationsOfOnes = []; for (var y = 0; y < input.length; y++) { s = ''; for (var x = 0; x < input[0].length; x++) {

我使用多项式O(n^2)运行时来查找所有1。然而,如果我的二维空间变大,这种方法将受到影响。它会消耗时间的。应该使用什么算法,你能重构代码吗

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;
}
函数findAllOnes(输入){
var s='';
位置函数=[];
对于(变量y=0;y

您可以使用此实时工作代码-

我认为这不能比O(n^2)做得更好,因为您必须至少遍历数组一次,才能得到值等于1的位置。

我认为这不能比O(n^2)做得更好因为您必须遍历数组至少一次,才能得到值等于1的位置。

这个指数运行时如何?这是O(n^2)哦,谢谢你纠正我。我会更新它这不是偶数O(n^2),而是O(n)。“n”是输入大小,它已经是所有元素的数量。您所能做的只是解决
var tmp=input[y]以避免在内循环中重复查找。调试输出也相当昂贵。数据是随机的吗?分类?还有什么可以帮助我们的吗?我现在很困惑:)它到底是哪个运行时?早些时候我写了“指数”,然后我被纠正,它应该是多项式运行时。我喜欢你关于tmp的想法。这个指数运行时间怎么样?这是O(n^2)哦,谢谢你纠正我。我会更新它这不是偶数O(n^2),而是O(n)。“n”是输入大小,它已经是所有元素的数量。您所能做的只是解决
var tmp=input[y]以避免在内循环中重复查找。调试输出也相当昂贵。数据是随机的吗?分类?还有什么可以帮助我们的吗?我现在很困惑:)它到底是哪个运行时?早些时候我写了“指数”,然后我被纠正,它应该是多项式运行时。我喜欢你关于tmp的想法。好的,我将等待其他输入。谢谢。根据您提供的信息,这是正确的答案。正如上面计算的那样,数组中的每个值都必须至少查看一次。明白了!我通过缓存长度做了一些小的更改。它可能会在很大的维度上有所帮助-好的,我将等待其他输入。谢谢。根据您提供的信息,这是正确的答案。正如上面计算的那样,数组中的每个值都必须至少查看一次。明白了!我通过缓存长度做了一些小的更改。这可能在很大的范围内有所帮助-