three sum solution hash
by raviteja gunda
JavaScript
/**
* @param {list_int32} arr
* @return {list_str}
*/
function find_zero_sum(arr, target) {
let result = [];
let hash = {};
let size = arr.length;
arr.sort((a, b) => a - b);
for (let i = 0; i < size; i++) {
let target = arr[i] * - 1;
let start_pointer = i + 1;
let end_pointer = size - 1;
while (start_pointer < end_pointer) {
let sum = arr[start_pointer] + arr[end_pointer];
if (sum == target) {
var newComb = arr[i] + "," + arr[start_pointer] + "," + arr[end_pointer];
if(!hash.hasOwnProperty(newComb)) {
result.push(newComb);
hash[newComb] = i;
}
start_pointer++;
} else if (sum > target) {
end_pointer--;
} else {
start_pointer++
}
}
}
return result;
}
console.log(find_zero_sum([10,4,-4,6,-6,9,-4], 0));
console.log(find_zero_sum([-1, -1, 0, 0, 1, 1], 0));
console.log(find_zero_sum([0, 0, 0], 0));