#2123. 零钱兑换

零钱兑换

问题背景

给你一个整数数组 coins,表示不同面额的硬币;以及一个整数 amount,表示总金额。

问题描述 计算并返回可以求和总金额需要的 ​最少的硬币个数​。如果没有任何一种硬币组合能够组成总金额,返回 -1

你可以认为每种硬币的数量是无限的。

样例

样例 1:

输入:

3
1 2 5 
11

输出:

3

解释:

11 = 5 + 5 + 1

样例 2:

输入:

1
2
3

输出:

-1

样例 3:

输入:

1
1
0

输出:

0

提示

  • 1 <= coins.length <= 12
  • 1 <= coins[i] <= 2^{31} - 1
  • 0 <= amount <= 10^4