【算法四十四】322. 零钱兑换

322. 零钱兑换

动态规划

java 复制代码
class Solution {
    public int coinChange(int[] coins, int amount) {
        Arrays.sort(coins);
        //子问题:在前i个硬币中选择最少的个数满足amount
        //dp[amount] = Math.min(dp[amount],dp[amount-coins[i]])+1
        //自下而上
        int[] dp = new int[amount+1];
        //因为就算是金额为1,也凑不出amount+1
        Arrays.fill(dp,amount+1);
        //定初始值
        dp[0] = 0;

        for(int i = 0;i<coins.length;i++){
            int money = coins[i];
            for(int sum = money;sum<=amount;sum++){
                dp[sum] = Math.min(dp[sum],dp[sum-money]+1);
            }
        }
        return dp[amount]>amount ? -1:dp[amount];
    }
}

时间复杂度:O(N*S) N是coins数组长度,S是金额大小

空间复杂度:O(S)

相关推荐
aqiu1111111 天前
【蓝桥杯 / C++】星际争霸 — 字符串逆序对与大整数自定义排序
算法
行者全栈架构师1 天前
【鸿蒙心迹】ArkUI 列表性能实战——为什么 200 条数据页面掉到 20fps,LazyForEach 怎么救(HarmonyOS 7.x)
前端·算法·架构
一碗甜汤ᐝ1 天前
高级算法分析与设计 | 常见 NP-Complete 问题总结
算法·np-complete·算法分析与设计·np完备问题
垆边人似月.1 天前
分割数组的最大值最小化(200分 / 二分答案 + 贪心)
数据结构·算法·排序算法
CQU_JIAKE1 天前
10.7【A】
算法
Dfreedom.1 天前
分类算法的统一视角:从方差最大化到概率建模再到损失函数
算法·支持向量机·分类
Nebula_g1 天前
JavaSE加强:Commons-io框架
java·开发语言·算法·javase
梦帮科技1 天前
【3.0修订版】音乐权利 NFT:MusicRightsNFT 的确权思想与授权关联
网络协议·算法·web3·区块链·密码学·智能合约·零知识证明
Dfreedom.1 天前
基于PCA的光谱物质识别分析
算法
强化湿件的技术神甫1 天前
KS检验和Lilliefors正态性检验方法
算法