Найти подходящую пару цифр в массиве

Задача заключается в том, чтобы вернуть все пары целых чисел из входящего массива целых чисел, которые имеют разность 2. Долго ломал голову, пробовал через циклы, но видимо все гораздо проще. Примеры:

[1, 2, 3, 4] -> [[1, 3], [2, 4]]

[4, 3, 1, 5, 6] -> [[1, 3], [3, 5], [4, 6]]


Ответы (1 шт):

Автор решения: MBo

Наиболее простая реализация - конечно, с двумя вложенными циклами, ну это, похоже, Вы уже умеете.

Ради эффективности - если массив отсортировать, то можно использовать метод двух индексов, правого и левого. Псевдокод

l_idx = 0
r_idx = 1
while l_idx, r_idx < A.length
    if A[r_idx] < A[l_idx] + 2
         r_idx++
    else if A[r_idx] == A[l_idx] + 2
          output pair (A[l_idx], A[r_idx])
    else
         l_idx++
→ Ссылка