Todos os desafios
Médio 0 resolvidos 0% de aceitação

Menor Soma de Moeda Impossível

Encontre o menor valor positivo que não pode ser formado com as moedas disponíveis.

Você pode selecionar qualquer subconjunto das moedas fornecidas. Cada moeda individual pode ser usada no máximo uma vez, mesmo que haja várias moedas com o mesmo valor. Encontre o menor inteiro positivo que nenhuma seleção de moedas consegue formar.

Implemente missing_coin_sum(coins).

Entrada

coins: Os valores das moedas disponíveis; duplicatas representam moedas distintas.

Saída

Retorne o menor valor positivo impossível de ser formado.

Restrições

1 ≤ número de moedas ≤ 200.000. Cada valor está entre 1 e 1.000.000.000.

Exemplos

Exemplo 1
Entrada:
coins = [1, 1, 4]

Saída esperada:
expected = 3
Entrada:
std::vector<long long> coins = {1, 1, 4};

Saída esperada:
long long expected = 3;
Entrada:
long[] coins = new long[] {1, 1, 4};

Saída esperada:
long expected = 3;

Explicação

Os valores 1 e 2 podem ser formados usando as moedas de valor 1. Não existe nenhum subconjunto disponível que some 3.

Exemplo 2
Entrada:
coins = [2, 3]

Saída esperada:
expected = 1
Entrada:
std::vector<long long> coins = {2, 3};

Saída esperada:
long long expected = 1;
Entrada:
long[] coins = new long[] {2, 3};

Saída esperada:
long expected = 1;

Explicação

Não há como formar 1 porque todas as moedas valem pelo menos 2.

Referências

Este desafio foi adaptado para o CodeUtility. Siga o enunciado e as restrições acima.

Aprenda com outros

Soluções da comunidade

Ainda não há soluções publicadas. Resolva este desafio para compartilhar a primeira.