我试图在数组中找到等于指定总和的元素索引。 我只想要2个索引。
unsnoc
我可以打印数字,但不能打印索引。请指教
答案 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的和