Menu
CoddyTech

Find the Duplicate Number

Ricevi un array nums di n+1 interi, ciascuno compreso tra 1 e n. Esattamente un valore compare più di una volta, anche molte volte, e devi restituire quel valore.

Risolvi il problema senza modificare nums e usando solo una quantità costante di memoria aggiuntiva.

Funzione

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 interi, ciascuno compreso tra 1 e n
Restituisceinteger
il valore che compare più di una volta

Vincoli

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Esattamente un valore compare due o più volte; ogni altro valore compare al massimo una volta.

Esempi

Input
nums = [2, 5, 1, 3, 5, 4]
Output
5
Spiegazione
Qui n è 5, e 5 si trova nelle posizioni 1 e 4, quindi la risposta è 5. Ogni altro valore da 1 a 5 compare una volta.

lock icon+17 test nascosti all’invio

challenge icon

Per approfondire

La ricerca binaria sui valori mantiene entrambe le regole in O(n log n) di tempo. Riesci a mantenerle in O(n) di tempo?

Ripristina il codice
def findDuplicate(nums):
    # Scrivi il codice qui
Casi di test

Caso 1

Caso 2

Input

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

Atteso

5