Torna alle sfide
Media 0 risolte 0% di accettazione

Somma Minima di Monete Mancante

Trova il primo importo positivo che non può essere ottenuto con le monete disponibili.

Cosa imparerai

  • Ordinare le monete e tenere traccia delle somme raggiungibili
  • Trovare il primo importo che non si può pagare
  • Dimostrare perché la regola greedy funziona

Problema

Puoi selezionare qualsiasi sottoinsieme delle monete fornite. Ogni singola moneta può essere usata al massimo una volta, anche se ci sono più monete con lo stesso valore. Trova il più piccolo intero positivo che nessuna selezione può produrre.

Implementa missing_coin_sum(coins).

Input

coins: I valori delle monete disponibili; i duplicati rappresentano monete distinte.

Output

Restituisci il più piccolo importo positivo impossibile.

Vincoli

1 ≤ numero di monete ≤ 200.000. Ogni valore è compreso tra 1 e 1.000.000.000.

Esempi

Esempio 1
Input:
coins = [1, 1, 4]

Output atteso:
expected = 3
Input:
std::vector<long long> coins = {1, 1, 4};

Output atteso:
long long expected = 3;
Input:
long[] coins = new long[] {1, 1, 4};

Output atteso:
long expected = 3;

Spiegazione

Gli importi 1 e 2 si ottengono usando le monete di valore uno. Nessun sottoinsieme disponibile totalizza 3.

Esempio 2
Input:
coins = [2, 3]

Output atteso:
expected = 1
Input:
std::vector<long long> coins = {2, 3};

Output atteso:
long long expected = 1;
Input:
long[] coins = new long[] {2, 3};

Output atteso:
long expected = 1;

Spiegazione

Non è possibile ottenere 1 perché ogni moneta vale almeno 2.

Come affrontarlo

Prova prima da solo, poi apri un suggerimento alla volta.

Suggerimento 1

Ordina le monete e costruisci la somma minima raggiungibile partendo dalla più piccola.

Suggerimento 2

Se la moneta successiva è più grande del primo importo non raggiungibile, quell'importo non potrà mai essere formato.

Suggerimento 3

I duplicati aiutano solo se estendono l'intervallo raggiungibile attuale senza buchi.

Complessità attesa

O(n log n) time, O(1) extra space, excluding sorting implementation details

Riferimenti

Questa sfida è adattata per CodeUtility. Segui la traccia e i vincoli sopra.

Impara dagli altri

Soluzioni della community

Nessuna soluzione pubblicata. Risolvi questa sfida per condividere la prima.