Ваш алгоритм содержит переполнение буфера.i
начинается с 0, поэтому я предполагаю, что индексы в массиве A
начинаются с нуля, т.е. первый элемент - A[0]
, последний - A[A.length-1]
.Теперь i
считает до A.length-1
, и в теле цикла обращается к A[i+1]
, который находится вне массива для последней итерации.Или, проще говоря: если вы сравниваете каждый элемент со следующим элементом, вы можете выполнять только сравнения длины 1.
Если вы хотите сообщить о дубликатах только один раз, я бы использовал переменную bool firstDuplicate
, это установлено в false, когда вы находите дубликат, и true, если число отличается от следующего.Тогда вы только сообщите о первом дубликате, сообщив только дубликаты номеров, если firstDuplicate
истинно.