Coin change
硬币找零问题:给定一个数组coins表示零钱的面值,然后给出手头钱的总数amount,问最少可以用多少枚硬币找零。
Example 1:
Input:coins=[1, 2, 5], amount = 11
Output:3
Explanation: 11 = 5 + 5 + 1
Example 2:
Input:coins=[1, 2, 5], amount = 3
Output:-1
1.BFS(广度优先搜索)
以当前值amount为起点,相邻的每一个节点为amount-coin(coin in coins, amount - coin),找出能找零的最小层即可,找不到返回-1.(运行超时)
class Solution:
def coinChange(self, coins, amount):
"""
:type coins: List[int]
:type amount: int
:rtype: int
"""
count = 0
if not coins:
return -1
if not amount:
return 0
if amount < coins[0]:
return -1
q_store = [amount]
while q_store:
count += 1
q_list = q_store
q_store = []