查找等于sum的数组中元素的索引-Javascript

时间:2019-02-05 23:46:43

标签: javascript

我试图在数组中找到等于指定总和的元素索引。 我只想要2个索引。

unsnoc

我可以打印数字,但不能打印索引。请指教

2 个答案:

答案 0 :(得分:2)

使用哈希表存储索引而不是值。另外,将索引推送到结果数组中:

function sumArrayHashTable(arr, sum) {

  const result = [];
  const hashTable = {};

  for (let i = 0; i < arr.length; i++) {

    const S = sum - arr[i];

    if (hashTable[S] !== undefined) {
      result.push([i, hashTable[S]]);
    } else {
      hashTable[arr[i]] = i;
    }
  }

  return result;
}

console.log(sumArrayHashTable([5, 2, 6, 1, 3, 9, 0], 9));

//Result should be [[2,4], [5,6]]

答案 1 :(得分:0)

function sumArrayHashTable(arr, sum) {
  var result = [];
  for (var i = 0; i < arr.length; i++) {
    var test = 0;
    for (var j = 0; j < arr.length; j++) {
      if (i === j) {
        continue ;
      }
      test = arr[i] + arr[j];
      if (test === sum) {
        result.push([i, j]);
      }
    }  
  }
  return result;
}

console.log(sumArrayHashTable([5, 2, 6, 1, 3, 9, 0], 9));

结果将是[[2,4], [5,6]]加上[[4,2], [6,5]],您现在就可以使用

算法很简单,O(n^2)-循环遍历数组一次,然后再次查找等于9的和