Кажется, что проблема заключается в отсутствии некоторых ограничений, которые были бы полезны.Первое, что я хотел бы предложить, каждое целое число в массиве должно быть отличным.По крайней мере, выходные данные должны быть уникальными парами.
Другим ограничением, которое может или не может применяться к определенной проблемной области, является отсортированный массив.Это ограничение, если оно истинно, предполагает простой алгоритм.Начните 2 указателя, левый и правый, их соответствующие концы.Если сумма совпадает, выведите ее, увеличьте влево и уменьшите вправо.Если не совпадает, уменьшите правый указатель, если сумма слишком велика, или увеличьте левое (слишком мало).Продолжайте регулировать влево и вправо, пока они не пересечутся где-то посередине.
Для несортированного массива.Создайте хеш-таблицу, вставьте все целые числа.Пройдите по массиву еще раз, на этот раз ищите в хэш-таблице значение, чтобы удовлетворить требуемую сумму.Если хеш-функция идеальна (что может быть сложно достичь), тогда ожидаемое время выполнения равно O (n).