关闭

LeetCode 322 Coin Change (完全背包)

标签: leetcode完全背包
988人阅读 评论(0) 收藏 举报
分类:

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

Example 1:
coins = [1, 2, 5], amount = 11
return 3 (11 = 5 + 5 + 1)

Example 2:
coins = [2], amount = 3
return -1.

Note:
You may assume that you have an infinite number of each kind of coin.


题目链接:https://leetcode.com/problems/coin-change/

题目分析:因为个数是无穷的,所以就是一个完全背包计数问题,dp[i]表示合到i所需要的最少个数,dp初始化为无穷大,dp[0] = 0
public class Solution {
    
    public int coinChange(int[] coins, int amount) {
        int[] dp = new int[amount + 1];
        Arrays.fill(dp, Integer.MAX_VALUE);
        dp[0] = 0;
        for(int i = 0; i < coins.length; i ++) {
            for(int j = 0; j <= amount; j ++) {
                int pre = j - coins[i];
                if(pre >= 0 && dp[pre] < Integer.MAX_VALUE) {
                    dp[j] = Math.min(dp[j], dp[pre] + 1);
                }
            }
        }
        if(dp[amount] == Integer.MAX_VALUE) {
            return -1;
        }
        return dp[amount];
    }
}


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

LeetCode BackPack 背包问题

//从上个月末之后就开始有点浮躁起来,本来计划国庆查漏补缺v.22bd 的,结果网卡光荣的坏了ORZ……无论如何,OFFER现在还没有拿到,即便是拿到了也不该放松学习的状态。Stay Hungry,Stay Foolish背包问题是动态规划的经典问题,LeetCode上有五种背包的变种问题,现在...
  • Thousa_Ho
  • Thousa_Ho
  • 2017-10-03 22:36
  • 2376

背包问题总结篇

1.混合了贪心思想的背包入门 nefu1028暑假计划 01背包 给定工作开始时间、完成时间、给的工资,工作不能重叠,求最大收益。 一维Dp表示截止到当前时间的最大收益,但是事先要对结构体按结束时间排序,防止前一状态没有值 #include #include #in...
  • zhou_yujia
  • zhou_yujia
  • 2016-05-24 14:59
  • 4567

LeetCode总结

最近完成了www.leetcode.com的online judge中151道算法题目。除各个题目有特殊巧妙的解法以外,大部分题目都是经典的算法或者数据结构,因此做了如下小结
  • lanxu_yy
  • lanxu_yy
  • 2014-01-04 20:19
  • 124298

leetcode中的DP题目总结

[leetcode 413]Arithmetic Slicesdp解释dp[i]dp[i] 代表以 ii 结尾的arithmetic slice的个数。因此有下列关系 dp[i]=dp[i−1]+1,ifA[i]−A[i−1]=A[i−1]−A[i−2]dp[i] = dp[i-1] + 1, i...
  • littleorange6
  • littleorange6
  • 2017-04-24 13:30
  • 378

leetcode 474. Ones and Zeroes 动态规划DP + 背包问题

In the computer world, use restricted resource you have to generate maximum benefit is what we always want to pursue.For now, suppose you are a domina...
  • JackZhang_123
  • JackZhang_123
  • 2017-12-12 14:29
  • 40

[LeetCode 322] Coin Change

You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you n...
  • sbitswc
  • sbitswc
  • 2016-01-12 16:22
  • 2649

leetcode 322. Coin Change-硬币交换|动态规划

原题链接:322. Coin Change 【思路】 本题考查动态规划。也许一开始很容易想到用贪心算法,但是贪心算法在某些情况下是不成立的,比如coins = [1, 3, 5, 6],要amount = 11,用贪心法返回3,实际上最少的是2(3 + 5)。因而改用动态规划,用dp存储硬币数量,d...
  • happyaaaaaaaaaaa
  • happyaaaaaaaaaaa
  • 2016-03-24 23:19
  • 5328

leetcode解题思路

收录https://oj.leetcode.com/problems/ 所有题目的解题思路。 Min Stack 题目要求: 设计一个最小栈,要求能实现pop、push、min操作,也就是返回栈内元素最小值。 解法: 新加一个辅助栈,保存当前栈内最小值。当入栈元素小于辅助栈栈顶元素时,同时入辅...
  • liuxialong
  • liuxialong
  • 2014-12-15 12:51
  • 2138

01背包、完全背包、多重背包

前言 今天花了一下午加一晚上的时间,在九度oj才ac了一道简单的多重背包题目,之前没做过多重背包的题目,导致我做题时复杂化了,虽然是假期但是也不能这么浪费时间,果断总结一下,这里参考了dd_engi大牛的《背包问题九讲》,原文链接:http://love-oriented.com/pack/ 0...
  • zinss26914
  • zinss26914
  • 2013-10-04 15:03
  • 10763

leetcode解题思路

收录https://oj.leetcode.com/problems/ 所有题目的解题思路。 Min Stack 题目要求: 设计一个最小栈,要求能实现pop、push、min操作,也就是返回栈内元素最小值。 解法: 新加一个辅助栈,保存当前栈内最小值。当入栈元素小于辅助栈栈顶元素时,同时入辅...
  • liuxialong
  • liuxialong
  • 2014-12-15 12:51
  • 2138
    个人资料
    • 访问:713815次
    • 积分:15006
    • 等级:
    • 排名:第909名
    • 原创:815篇
    • 转载:7篇
    • 译文:0篇
    • 评论:122条
    博客专栏