zoukankan      html  css  js  c++  java
  • 322. Coin Change

    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 -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.

    Credits:
    Special thanks to @jianchao.li.fighter for adding this problem and creating all test cases.

    非常经典的dp问题

    将amount作为dp的值,得到每个amount最少的硬币数

    init : dp[0] = 0;

    regular : dp[amount] = Math.min(dp[amount], dp[amount - coins[j]] + 1); 需设dp[i]= max;

    o(n ^2);

    //dp[amount] = Math.min(dp[amount], dp[amount - coins[j]] + 1);
    public class Solution {
        public int coinChange(int[] coins, int amount) {
            if(coins == null || coins.length == 0 || amount <= 0)
                return 0;
            int dp[] = new int[amount+1];
            dp[0] = 0;
            for(int i = 1; i <= amount; i ++){
                dp[i] = Integer.MAX_VALUE;
                for(int j = 0 ; j < coins.length ; j++){
                    if(i >= coins[j] && dp[i - coins[j]] != Integer.MAX_VALUE)
                        dp[i] = Math.min(dp[i], dp[i - coins[j]] + 1);
                }
            }
            return dp[amount] == Integer.MAX_VALUE?-1:dp[amount];
        }
    }
  • 相关阅读:
    Linux基础命令—网卡
    SHOW SLAVE STATUS解读
    perf工具crash的问题
    python学习之-requests模块基础
    DELL IDRAC API接口开发文档翻译及client模块
    cobbler ks文件解释--转载
    django学习之- 动态验证码学习
    django学习之- Ajax
    django学习之- modelForm
    django学习之- json序列化
  • 原文地址:https://www.cnblogs.com/joannacode/p/5998866.html
Copyright © 2011-2022 走看看