322. Coin Change
2016-04-24 19:11
363 查看
ou are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination
of the coins, return
Example 1:
coins =
return
Example 2:
coins =
return
Note:
You may assume that you have an infinite number of each kind of coin.
思路:这是一个动态规划题,首先dp[i],i在coins中的都是1,因为只需要一张这种coin就行了
对于i-coins[j]>=0 dp[i]=Math.max(dp[i],dp[i-coins[j]]+1)
代码如下(已通过leetcode)
public class Solution {
public int coinChange(int[] coins, int amount) {
if(coins==null||coins.length==0||amount<0) return -1;
int[] dp=new int[amount+1];
for(int i=0;i<coins.length;i++)
if(coins[i]<=amount) dp[coins[i]]=1;
for(int i=1;i<amount+1;i++) {
if(dp[i]==0) dp[i]=Integer.MAX_VALUE-1;
}
for(int i=1;i<amount+1;i++) {
for(int j=0;j<coins.length;j++) {
if(i-coins[j]>=0)
dp[i]=Math.min(dp[i], 1+dp[i-coins[j]]);
}
}
if(dp[amount]==Integer.MAX_VALUE-1) return -1;
else return dp[amount];
}
}
of the coins, return
-1.
Example 1:
coins =
[1, 2, 5], amount =
11
return
3(11 = 5 + 5 + 1)
Example 2:
coins =
[2], amount =
3
return
-1.
Note:
You may assume that you have an infinite number of each kind of coin.
思路:这是一个动态规划题,首先dp[i],i在coins中的都是1,因为只需要一张这种coin就行了
对于i-coins[j]>=0 dp[i]=Math.max(dp[i],dp[i-coins[j]]+1)
代码如下(已通过leetcode)
public class Solution {
public int coinChange(int[] coins, int amount) {
if(coins==null||coins.length==0||amount<0) return -1;
int[] dp=new int[amount+1];
for(int i=0;i<coins.length;i++)
if(coins[i]<=amount) dp[coins[i]]=1;
for(int i=1;i<amount+1;i++) {
if(dp[i]==0) dp[i]=Integer.MAX_VALUE-1;
}
for(int i=1;i<amount+1;i++) {
for(int j=0;j<coins.length;j++) {
if(i-coins[j]>=0)
dp[i]=Math.min(dp[i], 1+dp[i-coins[j]]);
}
}
if(dp[amount]==Integer.MAX_VALUE-1) return -1;
else return dp[amount];
}
}
相关文章推荐
- Ubantu install jdk
- AndroidStudio第一个项目HelloWorld
- Delphi_09_Delphi_Object_Pascal_面向对象编程
- Linux就这个范儿 第18章 这里也是鼓乐笙箫 Linux读写内存数据的三种方式
- Android常用抓包工具之TcpDump
- 搜索初步-1011
- Openfire服务器安装与配置教程
- Root Motion深度解析[Unity]
- Xcode命令使用大全
- Python 开发技巧和陷阱
- IOS网络通信 socket第三方库 AsyncSocket(GCDAsyncSocket)
- [JS]常用特效js插件
- awakeFromNib
- Android面试题——XUtils框架
- C++数组名和指针的区别
- acm 2 1024 Sequence one
- 学点虚拟化知识
- 安装PHP时的问题
- 本博客全部文章导航
- 高性能 PHP socket 框架 Workerman