leetcode322 零钱兑换
生活随笔
收集整理的這篇文章主要介紹了
leetcode322 零钱兑换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
給定不同面額的硬幣 coins 和一個(gè)總金額 amount。編寫一個(gè)函數(shù)來計(jì)算可以湊成總金額所需的最少的硬幣個(gè)數(shù)。如果沒有任何一種硬幣組合能組成總金額,返回?-1。
示例?1:
輸入: coins = [1, 2, 5], amount = 11
輸出: 3?
解釋: 11 = 5 + 5 + 1
示例 2:
輸入: coins = [2], amount = 3
輸出: -1
說明:
你可以認(rèn)為每種硬幣的數(shù)量是無限的。
分析:最后一句話說明是什么背包類型了,直接一頓敲
不會(huì)的翻我的動(dòng)態(tài)規(guī)劃文章就行了。
public class Solution {public int coinChange(int[] coins, int amount) {int max = amount + 1; int[] dp = new int[amount + 1]; Arrays.fill(dp, max); dp[0] = 0; for (int i = 1; i <= amount; i++) {for (int j = 0; j < coins.length; j++) {if (coins[j] <= i) {dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);}}}return dp[amount] > amount ? -1 : dp[amount];} }總結(jié)
以上是生活随笔為你收集整理的leetcode322 零钱兑换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java内存模型常见问题
- 下一篇: 串的堆分配实现