Javascript 查找未使用的组合

Javascript 查找未使用的组合,javascript,arrays,Javascript,Arrays,找到数组中尚未出现的组合的快速方法是什么 例如,我有一系列要点:[1,2,4,9] 我有一个连接列表[[1,2],[1,4],[1,9],[2,4],[4,9]] 因此,该列表中缺少的连接是[2,9]。因为有一个要求:每个整数必须连接到一个更大的整数 上面的代码可以工作,但是for循环的数量让我觉得它相当慢。有没有更快的办法?查看通过对数组排序,您可以使用两个嵌套来完成此操作。排序采用logn,循环基本上是^2 var points = [1, 2, 4, 9]; var connections

找到数组中尚未出现的组合的快速方法是什么

例如,我有一系列要点:[1,2,4,9]

我有一个连接列表[[1,2],[1,4],[1,9],[2,4],[4,9]]

因此,该列表中缺少的连接是[2,9]。因为有一个要求:每个整数必须连接到一个更大的整数


上面的代码可以工作,但是for循环的数量让我觉得它相当慢。有没有更快的办法?查看

通过对数组排序,您可以使用两个嵌套来完成此操作。排序采用logn,循环基本上是^2

var points = [1, 2, 4, 9];
var connections = [
  [1, 2],
  [1, 4],
  [1, 9],
  [2, 4],
  [4, 9]
];

connections.sort();

var missing = [];
var currentIndex = 0;
for (var i = 0; i < points.length; i++) {
  for (var j = i + 1; j < points.length; j++) {
    if (connections[currentIndex][0] == points[i] && connections[currentIndex][1] == points[j]) {
      currentIndex++;
    } else {
      missing.push([points[i], points[j]]);
    }
  }
}

console.log(missing);

您可以只迭代外部循环,直到长度为-2,并对插入的连接使用哈希表。连接的排序顺序并不重要

变量点=[1,2,4,9], 连接=[[1,2]、[1,4]、[1,9]、[2,4]、[4,9]], 缺少=[], i、 j, 一对 connected=Object.createnull; 连接。foreacha函数{ 连接的[a.join]=真; }; 对于i=0;i 为此,您可以使用接受回调方法的filter方法

var点=[1,2,4,9]; points=points.sort; 变量连接=[[1,2],[1,4],[1,9],[2,4],[4,9]; 变量组合=点。约化函数arr,elem,i{ forj=i+1;ja[0]==elem[0]&&a[1]==elem[1]==未定义; };
console.logdiff;您的数据是否保证已排序?@TatsuyukiIshi否,连接列表未排序。
var points = [1, 2, 4, 9];
var connections = [
  [1, 2],
  [1, 4],
  [1, 9],
  [2, 4],
  [4, 9]
];

connections.sort();

var missing = [];
var currentIndex = 0;
for (var i = 0; i < points.length; i++) {
  for (var j = i + 1; j < points.length; j++) {
    if (connections[currentIndex][0] == points[i] && connections[currentIndex][1] == points[j]) {
      currentIndex++;
    } else {
      missing.push([points[i], points[j]]);
    }
  }
}

console.log(missing);