zoukankan      html  css  js  c++  java
  • LeetCode 518. Coin Change 2

    原题链接在这里:https://leetcode.com/problems/coin-change-2/

    题目:

    You are given coins of different denominations and a total amount of money. Write a function to compute the number of combinations that make up that amount. You may assume that you have infinite number of each kind of coin.

    Example 1:

    Input: amount = 5, coins = [1, 2, 5]
    Output: 4
    Explanation: there are four ways to make up the amount:
    5=5
    5=2+2+1
    5=2+1+1+1
    5=1+1+1+1+1
    

    Example 2:

    Input: amount = 3, coins = [2]
    Output: 0
    Explanation: the amount of 3 cannot be made up just with coins of 2.
    

    Example 3:

    Input: amount = 10, coins = [10] 
    Output: 1

    Note:

    You can assume that

    • 0 <= amount <= 5000
    • 1 <= coin <= 5000
    • the number of coins is less than 500
    • the answer is guaranteed to fit into signed 32-bit integer

    题解:

    Let dp[i][j] denote with first i - 1 iron, to make up j, how many ways there are.

    dp[i][j] = dp[i-1][j] + dp[i][j - coins[i - 1]]. 

    dp[i - 1][j], without using coins[i - 1], the ways to make up j.

    Since we are using coins[i - 1], we need to accumlate the ways from amount j - coins[i - 1].

    Time Complexity: O(amount * n). n = coins.length.

    Space: O(amount).

    AC Java:

     1 class Solution {
     2     public int change(int amount, int[] coins) {
     3         if(amount < 0 || coins == null){
     4             return 0;
     5         }
     6         
     7         int [] dp  = new int[amount + 1];
     8         dp[0] = 1;
     9         
    10         for(int coin : coins){
    11             for(int i = 1; i <= amount; i++){
    12                 if(i - coin < 0){
    13                     continue;
    14                 }
    15                 
    16                 dp[i] += dp[i - coin];
    17             }
    18         }
    19         
    20         return dp[amount];
    21     }
    22 }

    类似Coin ChangeNumber of Dice Rolls With Target Sum.

  • 相关阅读:
    Android中Services之异步IntentService(二)
    Android服务之Service(其一)
    JPA 2.0 中的动态类型安全查询
    JPA注解参考
    WebService netbeans glassfish
    android ContentProvider
    github
    移动端
    php
    mysql
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/12194875.html
Copyright © 2011-2022 走看看