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 встречаются один раз.

lock icon+17 скрытых тестов при отправке

challenge icon

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

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

Сбросить код
def findDuplicate(nums):
    # Напишите код здесь
Тестовые случаи

Случай 1

Случай 2

Ввод

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

Ожидается

5