Учитывая массив чисел, сгенерируйте все уникальные пары.
Например, учитывая [ 1, 2, 3, 4, 5 ]
единственная пара чисел будет:
(1, 2), (1, 3), (1, 4), (1, 5)
(2, 3), (2, 4), (2, 5)
(3, 4), (3, 5)
(4, 5)
Мое решение таково:
int[] numbers = new int[] { 1, 2, 3, 4, 5 };
HashSet<Pair> pairs = new HashSet<Pair>();
for(int i = 0; i < numbers.Length; i++)
{
for(int j = i + 1, j < numbers.Length; j++)
{
pairs.Add(new Pair(numbers[i], numbers[j]));
}
}
Я думаю, что временная сложность для этого выглядит как O (n 2 - 1), вычитая 1, потому что итерация j
всегда 1 короче i
Проведя немного исследований в этой проблеме, я не могу найти окончательных ответов о том, можно ли это сделать быстрее. Есть ли лучшие решения, чем O (n 2 - 1)?