Skip to content

Instantly share code, notes, and snippets.

@Gerst20051
Last active December 9, 2020 21:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Gerst20051/b7e6b5b0c389d0800e115f2dcc2258b1 to your computer and use it in GitHub Desktop.
Save Gerst20051/b7e6b5b0c389d0800e115f2dcc2258b1 to your computer and use it in GitHub Desktop.
Find Sum To Match Target
// find two numbers whose sum equals the target_sum value
function create_digits(numbers) {
const digits = {};
for (let i = 0; i < numbers.length; i++) {
digits[numbers[i]] = 1;
}
return digits;
}
function find_sum(numbers, target_sum) {
const digits = create_digits(numbers);
for (let i = 0; i < numbers.length; i++) {
const diff = target_sum - numbers[i];
if (digits[diff]) {
return [numbers[i], diff];
}
}
}
console.log(JSON.stringify(find_sum([1, 3, 8, 6, 2, 4, 7, 0], 10)) === JSON.stringify([3, 7]));
console.log(JSON.stringify(find_sum([1, 8, 8, 6, 2, 4, 7, 0], 10)) === JSON.stringify([8, 2]));
console.log(JSON.stringify(find_sum([1, 8, 8, 3, 2, 4, 7, 0], 10)) === JSON.stringify([8, 2]));
console.log(JSON.stringify(find_sum([-1, 11, 8, 3, 2, 4, 7, 0], 10)) === JSON.stringify([-1, 11]));
console.log(JSON.stringify(find_sum([], 10)) === undefined);
console.log(JSON.stringify(find_sum([1, 8, 8, 6, 2, 4, 7, 0], 100)) === undefined);
function find_sum_slow(numbers, target_sum) {
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
if (numbers[i] + numbers[j] === target_sum) {
return [numbers[i], numbers[j]];
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment