Task 29. Найти все пары чисел в массиве, сумма ктр равна X

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.

Реализация:

реализация на JS

https://gist.github.com/unilecs/fa1962ad8ee0237983da958d8973898d


Тест: теперь вы можете потестить мой код:
https://jsfiddle.net/unilecs/mczsLkrd/1/

Report Page