322. Coin Change
Input: coins = [1, 2, 5], amount = 11
Output: 3
Explanation: 11 = 5 + 5 + 1Input: coins = [2], amount = 3
Output: -1// Bottom-Up Dynamic Programming
int coinChange(vector<int>& coins, int amount) { // time: O(amount * # of coins); space: O(amount)
vector<int> count(amount + 1, amount + 1);
count[0] = 0;
for (int i = 1; i <= amount; ++i) {
for (int coin : coins) {
if (i >= coin)
count[i] = min(count[i], count[i - coin] + 1);
}
}
return count.back() > amount ? -1 : count.back();
}Last updated