Я работаю над заданием, в котором мне нужно найти пары чисел, суммирующих до «х» со средним / наилучшим O (n) или линейной сложностью времени выполнения. Я не могу использовать грубую силу, поскольку это увеличит сложность.
Я использую HashSet и использую метод блюда, проверяю, могу ли я найти (x - array [i]) и печатаю его. Но содержит проверки методов для всего HashSet, где я хочу начать поиск после «i» -ой позиции на каждой итерации. Кроме того, я не могу отсортировать их, поскольку я должен распечатать их в порядке их появления во входном массиве.
if (hSet.Contains(x - array[i]))
{
Console.Write("(" + array[i] + "," + (x - array[i]) + ")");
hSet.Add(array[i]);
}
}
с массивом ввода {1, 6, 3, 2, 5, 5, 7, 8, 4, 8, 2, 5, 9, 9, 1};
Мой результат (1,9) (6,4) (3,7) (2,8) (5,5) (5,5) (7,3) (8,2) (4,6) (8,2) (2,8) (5,5) (9,1) (9,1)
Ожидаемый результат: (1,9), (1,9), (6,4), (3,7), (2,8), (2,8), (5,5), (5 , 5), (5,5), (8,2), (8,2), (9,1), (9,1)