Menu
CoddyTech

Find the Duplicate Number

Você recebe um array nums de n+1 inteiros, cada um entre 1 e n. Exatamente um valor aparece mais de uma vez, possivelmente muitas vezes, e você retorna esse valor.

Resolva sem alterar nums e usando apenas uma quantidade constante de memória extra.

Função

findDuplicate(nums: integer-array) → integer
numsinteger-array
n+1 inteiros, cada um entre 1 e n
Retornainteger
o valor que aparece mais de uma vez

Restrições

  • 1 ≤ n ≤ 104
  • nums.length == n+1
  • 1 ≤ nums[i] ≤ n
  • Exatamente um valor aparece duas ou mais vezes; todos os outros valores aparecem no máximo uma vez.

Exemplos

Entrada
nums = [2, 5, 1, 3, 5, 4]
Saída
5
Explicação
Aqui, n é 5, e 5 está nas posições 1 e 4, então a resposta é 5. Todos os outros valores de 1 a 5 aparecem uma vez.

lock icon+17 testes ocultos ao enviar

challenge icon

Para ir além

A busca binária nos valores mantém ambas as regras em tempo O(n log n). Você consegue mantê-las em tempo O(n)?

Redefinir código
def findDuplicate(nums):
    # Escreva o código aqui
Casos de teste

Caso 1

Caso 2

Entrada

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

Esperado

5