2 回答

TA貢獻1846條經(jīng)驗 獲得超7個贊
function two_sum(arr) {
let hash = new Map();
return arr.reduce((results, ele, i) => {
if (hash.has(-ele)) {
results = results.concat(hash.get(-ele).map(e => [i, e]))
}
hash.set(ele, hash.get(ele) || []);
hash.get(ele).push(i);
return results;
}, []);
}

TA貢獻1783條經(jīng)驗 獲得超4個贊
像這樣的事情,也許:
const sumZeroIndexPairs = arr => {
const hashMap = arr.reduce(
(result, value, index, list) => {
list.forEach((n, i) => {
const key = [ index, i ].sort().join('_')
const sum = value + n
result[key] = sum
})
return result
},
{}
);
return Object.entries(hashMap)
.filter( ([key, value]) => value === 0 )
.map(([key]) => key.split('_'));
}
console.log(sumZeroIndexPairs([1, 2, 3, -1, 5, -5, 7, 9, -7, 2, -2]))
添加回答
舉報