TheAlgorithms/C-Sharp · error
Coins array cannot contain duplicates
Error message
Coins array cannot contain duplicates {nameof(coinsAsArray)}. What it means
ValidateCoinsArray requires all coin denominations to be unique. Duplicate entries do not change the solution but break the solver's assumptions about the coin system, so it throws InvalidOperationException when GroupBy detects any value appearing more than once.
Solutions
- Deduplicate the array: coins.Distinct().ToArray() before calling.
- Fix the merge/append logic that produced duplicates.
- Validate and normalize input denominations once at the boundary of your application.
Example fix
// before var coins = defaults.Concat(userCoins).ToArray(); // may duplicate solver.GenerateSingleCoinChanges(coins, amount); // after var coins = defaults.Concat(userCoins).Distinct().ToArray(); solver.GenerateSingleCoinChanges(coins, amount);
Defensive patterns
Strategy: validation
Validate before calling
coins = (coins ?? Array.Empty<int>()).Where(c => c > 0).Distinct().ToArray();
Try / catch
try { solver.GenerateSingleCoinChanges(coins, amount); }
catch (InvalidOperationException ex) { Console.Error.WriteLine($"Duplicate coins: {ex.Message}"); } Prevention
- Call .Distinct() whenever merging denomination sources
- Normalize coin sets once, early
- Add unit tests for merged coin inputs
When it happens
Trigger: Calling GenerateSingleCoinChanges with coins such as [1, 1, 5, 10] or [2, 5, 5].
Common situations: Merging denomination lists from multiple sources without deduplication; appending a default coin set to user-supplied coins; Concat of two overlapping arrays.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Coins array must contain coin 1
- cannot contain numbers less than or equal to zero
- The value for some n_i is smaller than or equal to 1.
- The GCD of n_ = and n_ = equals and thus these values…
- Adjacency matrix must be square.
AI-assisted analysis of TheAlgorithms/C-Sharp@96e2905cab (2026-09-13).
Data as JSON: /api/errors/b5779d1923b0e6a0.
Report an issue: GitHub.
Appendix: source
Thrown at Algorithms/Problems/DynamicProgramming/CoinChange/DynamicCoinChangeSolver.cs:166
if (!coinsContainOne)
{
throw new InvalidOperationException($"Coins array must contain coin 1 {nameof(coinsAsArray)}.");
}
var containsNonPositive = coinsAsArray.Any(x => x <= 0);
if (containsNonPositive)
{
throw new InvalidOperationException(
$"{nameof(coinsAsArray)} cannot contain numbers less than or equal to zero");
}
var containsDuplicates = coinsAsArray.GroupBy(x => x).Any(g => g.Count() > 1);
if (containsDuplicates)
{
throw new InvalidOperationException($"Coins array cannot contain duplicates {nameof(coinsAsArray)}.");
}
}
}
View on GitHub (pinned to 96e2905cab)