leetcode322. Coin Change

换硬币问题,经典DP问题,我们依然可以采取带记忆数组的递归或者动态规划来求解问题。同样地,这是一道经典的完全背包题目,可以和leetcode322对照着看,注意体会细节。

public  int coinChange(int[] coins, int amount) {
       int[] dp = new int[amount + 1];
        Arrays.fill(dp, amount + 1);
        dp[0] = 0;
        for (int i = 1; i <= coins.length; i++) {
            for (int j = 0; j <= amount; j++) {
                if (j >= coins[i - 1]) {
                    dp[j] = Math.min(dp[j], dp[j - coins[i - 1]] + 1);
                }
            }
        }
        return dp[amount] == amount + 1 ? -1 : dp[amount];
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 0. 动态规划分析 0.1 动态规划、递归和贪心算法的区别 动态规划就是利用分治思想和解决冗余的办法来处理问题,所...
    dreamsfuture阅读 12,157评论 2 6
  • 动态规划方法的关键点 1、最优化原理,也就是最优子结构性质。这指的是一个最优化策略具有这样的性质,不论过去状态和决...
    雨住多一横阅读 3,561评论 1 0
  • 分治策略 本文包括分治的基本概念二分查找快速排序归并排序找出伪币棋盘覆盖最大子数组 源码链接:https://gi...
    廖少少阅读 5,897评论 0 7
  • 本文针对两篇优秀动态规划文章中存在的不易理解的部分:状态、状态转移的定义和状态转移方程的编程实现部分进行个人解读。...
    __Jingyu__阅读 3,848评论 0 0
  • 0x50「动态规划」例题 几点总结1 DP三要素:状态,阶段,决策。具体地讲,若DP时是双重循环,第一重循环通常表...
    云中翻月阅读 6,646评论 2 4

友情链接更多精彩内容