[LeetCode 322] Coin Change
2016-01-12 16:22
405 查看
You 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.
Solution:
DP
dp[amount] = Min (dp[diff] +1, dp[amount] )
public int coinChange(int[] coins, int amount) {
if(coins == null || coins.length == 0) {
return -1;
}
if(amount <=0) return 0;
int[] dp = new int[amount+1];
for(int i=1;i<dp.length; i++) {
dp[i] = Integer.MAX_VALUE;
}
for(int am=1;am<=amount;am++) {
for(int i=0;i<coins.length;i++) {
if(coins[i]<=am) {
int diff = am - coins[i];
if(dp[diff] != Integer.MAX_VALUE) {
dp[am] = Math.min(dp[diff] +1, dp[am]);
}
}
}
}
return dp[amount] == Integer.MAX_VALUE ? -1 : dp[amount];
}
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
-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.
Solution:
DP
dp[amount] = Min (dp[diff] +1, dp[amount] )
public int coinChange(int[] coins, int amount) {
if(coins == null || coins.length == 0) {
return -1;
}
if(amount <=0) return 0;
int[] dp = new int[amount+1];
for(int i=1;i<dp.length; i++) {
dp[i] = Integer.MAX_VALUE;
}
for(int am=1;am<=amount;am++) {
for(int i=0;i<coins.length;i++) {
if(coins[i]<=am) {
int diff = am - coins[i];
if(dp[diff] != Integer.MAX_VALUE) {
dp[am] = Math.min(dp[diff] +1, dp[am]);
}
}
}
}
return dp[amount] == Integer.MAX_VALUE ? -1 : dp[amount];
}
相关文章推荐
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- LFC1.0.0 版本发布
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- Android px、dp、sp之间相互转换
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- leetcode----Longest Substring Without Repeating Characters
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList