题解 | #兑换零钱(二)#

兑换零钱(二)

http://www.nowcoder.com/practice/521cead04d1442899767578c3aa395f0

题意:
        给定一个整数数组 nums 表示不同数额的硬币和一个正整数 target 表示总金额,请你计算并返回可以凑出总金额的的组合数。
        如果凑不出 target 则返回 0。

方法一:
动态规划(完全背包)

思路:
        dp[i]表示硬币凑成 i 的组合数。
        不同数额的硬币可以取任意个凑成target总金额,因此是完全背包问题。

        

    

class Solution {
public:
    int dp[50005]={0};//dp[i]表示凑成i的组合数
    int change(int target, vector<int>& nums) {
        int n=nums.size();
        dp[0]=1;//初始化
        for(int i=0;i<n;i++){//完全背包
            for(int j=nums[i];j<=target;j++){
                dp[j]+=dp[j-nums[i]];
            }
        }
        return dp[target];
    }
};

时间复杂度:
空间复杂度:

方法二:
java

思路:
        java实现。
        

import java.util.*;


public class Solution {
    
    public int change (int target, int[] nums) {
        int[] dp=new int[target+1];//dp[i]表示凑成i的组合数
        int n=nums.length;
        dp[0]=1;//初始化
        for(int i=0;i<n;i++){//完全背包
            for(int j=nums[i];j<=target;j++){
                dp[j]+=dp[j-nums[i]];
            }
            
        }
        return dp[target];
    }
}

时间复杂度:
空间复杂度:





全部评论

相关推荐

04-30 21:35
已编辑
长安大学 C++
晓沐咕咕咕:评论区没被女朋友好好对待过的计小将可真多。觉得可惜可以理解,毕竟一线大厂sp。但是骂楼主糊涂的大可不必,说什么会被社会毒打更是丢人。女朋友体制内生活有保障,读研女朋友还供着,都准备订婚了人家两情相悦,二线本地以后两口子日子美滋滋,哪轮到你一个一线城市房子都买不起的996清高计小将在这说人家傻😅
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务