Problema
Ver original (inglés)Puedes seleccionar cualquier subconjunto de las monedas proporcionadas. Cada moneda individual puede usarse como máximo una vez, incluso si hay varias monedas con el mismo valor. Encuentra el menor entero positivo que no pueda obtenerse con ninguna selección.
Implementa missing_coin_sum(coins).
Entrada
coins: Los valores de las monedas disponibles; los duplicados representan monedas distintas.
Salida
Devuelve la menor cantidad positiva imposible de obtener.
Restricciones
1 ≤ número de monedas ≤ 200,000. Cada valor está entre 1 y 1,000,000,000.
Ejemplos
Entrada:
coins = [1, 1, 4]
Salida esperada:
expected = 3
Entrada:
std::vector<long long> coins = {1, 1, 4};
Salida esperada:
long long expected = 3;
Entrada:
long[] coins = new long[] {1, 1, 4};
Salida esperada:
long expected = 3;
Explicación
Las cantidades 1 y 2 se pueden formar usando las monedas de valor uno. No existe ningún subconjunto disponible que sume 3.
Entrada:
coins = [2, 3]
Salida esperada:
expected = 1
Entrada:
std::vector<long long> coins = {2, 3};
Salida esperada:
long long expected = 1;
Entrada:
long[] coins = new long[] {2, 3};
Salida esperada:
long expected = 1;
Explicación
No hay forma de obtener 1 porque todas las monedas valen al menos 2.
Referencias
Este reto está adaptado para CodeUtility. Sigue el enunciado y las restricciones indicadas arriba.