Problema
Ver original (inglês)Retorne o segundo maior valor distinto na lista. Valores repetidos contam apenas uma vez.
Implemente second_largest(numbers).
Entrada
numbers: Uma lista de inteiros não negativos.
Saída
Retorne o segundo maior valor distinto, ou -1 se não existir.
Restrições
0 ≤ tamanho ≤ 100.000; 0 ≤ cada valor ≤ 10⁹
Exemplos
Entrada:
numbers = [4, 9, 7, 9]
Saída esperada:
expected = 7
Entrada:
std::vector<long long> numbers = {4, 9, 7, 9};
Saída esperada:
long long expected = 7;
Entrada:
long[] numbers = new long[] {4, 9, 7, 9};
Saída esperada:
long expected = 7;
Explicação
Os valores distintos são 9, 7, 4; o segundo maior é 7.
Entrada:
numbers = [5, 5]
Saída esperada:
expected = -1
Entrada:
std::vector<long long> numbers = {5, 5};
Saída esperada:
long long expected = -1;
Entrada:
long[] numbers = new long[] {5, 5};
Saída esperada:
long expected = -1;
Explicação
Existe apenas um valor distinto, então a resposta é -1.
Referências
Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.