Задача: Как посчитать одинаковые пары за 1 проход (самая быстрая версия!)
Псевдокод: Линейная версия подсчета одинаковых пар с помощью Хеш-таблицы
  1. input=<исходный массив N чисел>
  2. countTable = new HashTable
  3.  
  4. // Проходимся по всем числам и сохраняем их кол-во
  5. for (i = 1...N-1) do:
  6. count = countTable.get(input[i]) // смотрим есть ли уже что по этому числу
  7. if count is empty? then: // Число еще не добавлено в Таблицу
  8. count = 0
  9.  
  10. count = count + 1
  11. countTable.put(input[i], count) // Сохраняем текущее число с его количеством
  12.  
  13. // далее проходимся по таблице и по формуле складываем ко-во пар
  14. result = 0
  15. for each key=>value from countTable do:
  16. if (value > 1) then:
  17. result = result + (value - 1) * value / 2
  18.  
  19. return result // возвращаем искомое количество