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.

  • 相关阅读:
    Python操作SQLServer示例
    T-SQL 谓词和运算符
    T-SQL 语句—— 游标
    SQL中的循环、for循环、游标
    web自动化快速入门
    接口自动化的总结
    jenkins知识
    SVN知识
    random.sample函数
    项目实战(六)
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/12194875.html
Copyright © 2011-2022 走看看