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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

零钱兑换Python解法

發布時間:2023/12/19 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 零钱兑换Python解法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

給你一個整數數組 coins ,表示不同面額的硬幣;以及一個整數 amount ,表示總金額。

計算并返回可以湊成總金額所需的 最少的硬幣個數 。如果沒有任何一種硬幣組合能組成總金額,返回?-1 。

你可以認為每種硬幣的數量是無限的。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/coin-change
?

例:

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

# 解析:動態規劃,從總金額1開始遍歷,若當前金額大于數組中正在判斷的金額,那么減去硬幣的值得到的值可以在前面的金額中找到,若找不到即為-1,找到了則加上這枚硬幣即可(硬幣數目加一),每個硬幣都判斷完后,符合要求的情況再求出硬幣最少的情況。

class Solution(object):def coinChange(self, coins, amount):""":type coins: List[int]:type amount: int:rtype: int"""res = [0 for i in range(amount + 1)] # 初始化為0,因為下標的原因多一位for i in range(1, amount+1): # 對目標金額以及小于它的所有金額進行遍歷cost = float('inf') # 消耗數目初始化為無窮大,因為要找最小值for c in coins: # 對數組中的硬幣進行判斷if i - c >= 0: # 如果當前值大于硬幣值,那么減去可獲得之前的金額數cost = min(cost, res[i - c] + 1) # 在之前的金額數上加一然后與之前的消耗數目比較,選出數目最小的那種情況res[i] = cost # 然后將最少的情況放入dp數組if res[amount] == float('inf'): # 判斷,如果dp數組的目標金額存放位置為無窮大(inf)說明沒有可以實現的情況return -1 # 返回-1else:return res[amount] # 存在直接返回數值即可

?

總結

以上是生活随笔為你收集整理的零钱兑换Python解法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。