Torna alle sfide
Media 0 risolte 0% di accettazione

Smallest Missing Coin Sum

Find the first positive amount that cannot be made from the available coins.

Cosa imparerai

  • Sort coins and track reachable sums
  • Find the first gap in what you can pay
  • Prove why the greedy rule works

Problema

Mostra traduzione

You may select any subset of the supplied coins. Each individual coin may be used at most once, even when multiple coins share a value. Find the smallest positive integer amount that no selection can produce.

Implement missing_coin_sum(coins).

Input

coins: The values of the available coins; duplicates represent separate coins.

Output

Return the smallest positive impossible amount.

Vincoli

1 ≤ number of coins ≤ 200,000. Each value is between 1 and 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

Amounts 1 and 2 use the one-valued coins. No available subset totals 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

There is no way to make 1 because every coin is worth at least 2.

Come affrontarlo

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

Suggerimento 1

Sort the coins and build the smallest reachable sum from smallest upward.

Suggerimento 2

If the next coin is larger than the first unreachable amount, that amount can never be formed.

Suggerimento 3

Duplicates help only when they extend the currently reachable range without gaps.

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.