1. 程式人生 > >322. Coin Change

322. Coin Change

方法 一個數 src tar color 一個 math tps https

技術分享圖片

該題要使用動態規劃,參考了鏈接:

https://blog.csdn.net/happyaaaaaaaaaaa/article/details/50976088

中的第二種方法,主要思路是用一個數組dp來存儲硬幣的數量,例如數組中第 i 個元素就保存達到目標金額為 i 的最少硬幣數,湊齊錢數amount最少的硬幣數為 固定錢數coins[j] 的一枚硬幣,其余錢數為 amount - coins[j],那麽數量為dp[amount-conis[j]]。

代碼如下:

 1 class Solution {
 2     public int coinChange(int[] coins, int amount) {
3 int[] dp = new int[amount + 1]; 4 for (int i = 1; i <= amount; i++) dp[i] = 0x7fff_fffe; 5 for (int coin : coins) 6 for (int i = coin; i <= amount; i++) 7 dp[i] = Math.min(dp[i], dp[i - coin] + 1); 8 return dp[amount] == 0x7fff_fffe ? -1 : dp[amount];
9 } 10 }

END

322. Coin Change