日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode题组:第322题-零钱兑换

發(fā)布時(shí)間:2025/4/5 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode题组:第322题-零钱兑换 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.題目

難度:中

給定不同面額的硬幣 coins 和一個(gè)總金額 amount。編寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算可以湊成總金額所需的最少的硬幣個(gè)數(shù)。如果沒(méi)有任何一種硬幣組合能組成總金額,返回 -1。

示例 1:

輸入: coins = [1, 2, 5], amount = 11
輸出: 3
解釋: 11 = 5 + 5 + 1

示例 2:

輸入: coins = [2], amount = 3
輸出: -1

說(shuō)明:你可以認(rèn)為每種硬幣的數(shù)量是無(wú)限的。


2.我的解答

思路:

  • 看題目的問(wèn)法,只問(wèn)最優(yōu)值是多少,沒(méi)有要我們求最優(yōu)解,可以通過(guò)動(dòng)態(tài)規(guī)劃來(lái)解決這個(gè)問(wèn)題;
  • 最優(yōu)子結(jié)構(gòu)其實(shí)比較明顯,根據(jù)示例 1:

輸入: coins = [1, 2, 5], amount = 11

湊成面值為 11 的最小硬幣數(shù)可以由以下 3 者的最小值得到:

1、湊成面值為 10 的最小硬幣數(shù) + 面值為 1的這一枚硬幣;
2、湊成面值為 9 的最小硬幣數(shù) + 面值為 2 的這一枚硬幣;
3、湊成面值為 6 的最小硬幣數(shù) + 面值為 5 的這一枚硬幣;

即:dp[11] = min (dp[10] + 1, dp[9] + 1, dp[6] + 1)。

可以直接把題目的問(wèn)法設(shè)計(jì)成狀態(tài)。

第 1 步:定義「狀態(tài)」

dp[i]:湊齊總價(jià)值i需要的最少硬幣數(shù),狀態(tài)就是問(wèn)的問(wèn)題。

第 2 步:寫(xiě)出「狀態(tài)轉(zhuǎn)移方程」

根據(jù)對(duì)具體例子的分析:
dp[amount] = min(1 + dp[amount - coin[i]]) for i in [0, len - 1] if coin[i] <= amount

看到代碼實(shí)現(xiàn)

//動(dòng)態(tài)規(guī)劃 int coinChange(int* coins, int coinsSize, int amount){int i,j;int *dp=(int *)malloc(sizeof(int)*(amount+1));//dp[i]代表i金額最小的memset(dp,-1,sizeof(int)*(amount+1));//初始化//將硬幣值的大小當(dāng)做dp數(shù)組的下標(biāo)for(i=0;i<coinsSize&&coins[i]<=amount;i++) dp[coins[i]]=1;dp[0]=0;for(i=0;i<=amount;i++)//狀態(tài)轉(zhuǎn)移方程{ int number=amount+1;//逐個(gè)比較i-coins[j]所需的最小硬幣數(shù)for(j=0;j<coinsSize;j++){//如果硬幣可用if(i-coins[j]>=0&&dp[i-coins[j]]!=-1)number=dp[i-coins[j]]<number ? dp[i-coins[j]]+1 : number;}if(number!=amount+1) dp[i]=number;}return dp[amount]; }

總結(jié)

以上是生活随笔為你收集整理的LeetCode题组:第322题-零钱兑换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。