Задача: Посчитать количество пар чисел (number of equal pairs)
Исходник: Найти все одинаковые пары чисел в массиве перебором, язык: java [code #797, hits: 451]
автор: this [добавлен: 03.01.2022]
  1. import java.util.Arrays;
  2. import java.util.function.IntFunction;
  3.  
  4. class EqualPairCounter {
  5. int numberOfEqualPairsQuadratic(int[] arr) {
  6. int res = 0;
  7. for (int i = 1; i < arr.length; i++) {
  8. for (int j = i + 1; j < arr.length; j++) {
  9. if (i != j && arr[i] == arr[j]) {
  10. res++;
  11. }
  12. }
  13. }
  14. return res;
  15. }
  16.  
  17. public static void main(String[] args) {
  18. int[] arr = new int[] {2,3,5,7,3,9,6,5,6,6,2,4,1,6,3};
  19. int pairCount = new EqualPairCounter().numberOfEqualPairsQuadratic(arr);
  20. System.out.printf("Res: %s", pairCount); // => 10
  21. }
  22. }
Находим все пары чисел которые равны медленным алгоритмом, перебирая исходный массив сначала во внешнем цикле и потом во внутреннем начиная с текущего элемента (подробней здесь), на выходе получаем конечно же квадратичную сложность, что плохо.
Если что - существует более быстрый алгоритм с линейно-логарифмической сложностью N*logN - подробней тут.
Тестировалось на: java-11-openjdk-amd64 @ubuntu20LTS

+добавить реализацию