Task 29. Найти все пары чисел в массиве, сумма ктр равна X
UniLecsЗадача: найти и вывести все пары целых чисел в массиве, сумма которых равна заданному значению X.
Например, массив [ 3, 4, 5, -2, 10, 11, 12, -1, 0, 7, 8 ]; X = 10
Идея: возможны несколько вариантов решений:
1. Воспользуемся hashMap<number, number>. Проходим массив и проверяем есть ли в хэш таблице X - arr(i):
если нашли, то выводим пару чисел arr(i), X - arr(i).
2. Воспользуемся сортировкой массива по возрастанию. После сортировки массив будет следующего вида:
[ -2, -1, 0, 3, 4, 5, 7, 8, 10, 11, 12 ]
Теперь пойдем с начала (start) и с конца массива (end) и будем проверять сумму.
Соот-но чтобы найти второе слагаемое к start будем двигать end к началу.
Если arr[start] + ar[end] < X, значит второго слагаемого для start нет (т.к. массив отсортирован) и мы двигаем start к концу, пока start < end.
Реализация:
https://gist.github.com/unilecs/fa1962ad8ee0237983da958d8973898d
Тест: теперь вы можете потестить мой код:
https://jsfiddle.net/unilecs/mczsLkrd/1/