Вдохновленный этот вопрос о mathoverflow
Предположим, что у меня есть таблица n x n, каково количество различных значений на ней?
Например, таблица умножения 3X3
1 2 3
2 4 6
3 6 9
имеет 6 уникальные значения, а именно [1, 2, 3, 4, 6, 9]
Пока у меня есть решение O (n 2)
public static void findDistinctNumbers(int n) {
Set<Integer> unique = new HashSet<>();
for(int i=1; i<=n; i++) {
for(int j=1; j<=n; j++) {
unique.add(i*j);
}
}
System.out.println("number of unique values: " + unique.size());
}
Есть ли лучший подход, который меньше O (n 2)?