Menu
CoddyTech

Find the Duplicate Number

Тебе дан массив nums из n+1 целых чисел, каждое из которых находится в диапазоне от 1 до n. Ровно одно значение встречается более одного раза, возможно, много раз, и нужно вернуть это значение.

Реши задачу, не изменяя nums и используя лишь постоянный объём дополнительной памяти.

Функция

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 целых чисел, каждое от 1 до n
Возвращаетinteger
значение, которое встречается более одного раза

Ограничения

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Ровно одно значение встречается два или более раз; каждое другое значение встречается не более одного раза.

Примеры

Ввод
nums = [2, 5, 1, 3, 5, 4]
Вывод
5
Пояснение
Здесь n равно 5, а число 5 стоит на позициях 1 и 4, поэтому ответ — 5. Все остальные значения от 1 до 5 встречаются один раз.
challenge icon

Дополнительный вопрос

The двоичный поиск по значениям сохраняет оба правила за время O(n log n). Сможешь обеспечить для них время O(n)?

Сбросить код
def findDuplicate(nums):
    # Напишите код здесь

Тест #1

Тест #2

Аргумент

nums = [2, 5, 1, 3, 5, 4]

Ожидаемый вывод

5