Menu
CoddyTech

Find the Duplicate Number

Otrzymujesz tablicę nums zawierającą n+1 liczb całkowitych, z których każda mieści się w przedziale od 1 do n. Dokładnie jedna wartość występuje więcej niż raz, być może wiele razy, i zwracasz tę wartość.

Rozwiąż to bez zmieniania nums i używając tylko stałej ilości dodatkowej pamięci.

Funkcja

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 liczb całkowitych, z których każda mieści się w przedziale od 1 do n
Zwracainteger
wartość, która pojawia się więcej niż raz

Ograniczenia

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Dokładnie jedna wartość występuje co najmniej dwa razy; każda pozostała wartość występuje najwyżej raz.

Przykłady

Wejście
nums = [2, 5, 1, 3, 5, 4]
Wyjście
5
Wyjaśnienie
Tutaj n wynosi 5, a 5 znajduje się na pozycjach 1 i 4, więc odpowiedzią jest 5. Każda inna wartość od 1 do 5 występuje raz.

lock icon+17 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Wyszukiwanie binarne po wartościach pozwala zachować obie reguły w czasie O(n log n). Czy potrafisz zachować je w czasie O(n)?

Zresetuj kod
def findDuplicate(nums):
    # Napisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Wejście

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

Oczekiwane

5