[LeetCode] Coin Change


Coin Change

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:
coins = [2], amount = 3
return -1.

Note:
You may assume that you have an infinite number of each kind of coin.

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

 

DP!

 1 class Solution {
 2 public:
 3     int coinChange(vector<int>& coins, int amount) {
 4         vector<int> dp(amount + 1, INT_MAX);
 5         dp[0] = 0;
 6         for (auto coin : coins) {
 7             for (int i = coin; i <= amount; ++i) {
 8                 if (dp[i-coin] != INT_MAX) {
 9                     dp[i] = min(dp[i], dp[i - coin] + 1);
10                 }
11             }
12         }
13         return dp[amount] == INT_MAX ? -1 : dp[amount];
14     }
15 };

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM