力扣---零钱兑换---动态规划

思路:

 这是一道典型的动态规划问题(希望下次不用提示,能直接认出来):我将g[i]定义为总金币为i所需的最少硬币个数。所以递推公式可以表示为:g[i]=min(g[i-1],g[i-2],g[i-5])+1,也就是g[i]=min(g[i-coins[j])+1。数组初始化就是g[0]=0,g[coins[j]]=1。需要注意的是:

coins[i]的最大值是INT_MAX,所以我更习惯用LONG_MAX为g赋初值。其次,因为无法开很大的数组,同时注意到coins[i]>amount的部分是没有意义的,所以只需要开amount大的数组即可。

代码:

C++:

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<long> g(10010,LONG_MAX);
        int len=coins.size();
        //初始化
        g[0]=0;
        for(int i=0;i<len;i++){
            if(coins[i]>amount){continue;}
            else{g[coins[i]]=1;}
        }
        //dp   g[i]=min(g[i-coins[j]])+1
        for(int i=1;i<amount+1;i++){
            for(int j=0;j<len;j++){
                if(i-coins[j]>=0 && g[i-coins[j]]!=LONG_MAX){
                    g[i]=min(g[i],g[i-coins[j]]+1);
                }
            }
        }
        if(g[amount]==LONG_MAX){
            return -1;
        }
        else{return g[amount];}
    }
};

Python:

class Solution:
    def coinChange(self, coins: List[int], amount: int) -> int:
        g=[float("inf")]*10010
        len_coins=len(coins)

        g[0]=0
        for i in range(len_coins):
            if coins[i]>amount:
                continue
            else:
                g[coins[i]]=1
        for i in range(1,amount+1):
            for j in range(len_coins):
                if i-coins[j]>=0 and g[i-coins[j]]!=float("inf"):
                    g[i]=min(g[i],g[i-coins[j]]+1)
        if g[amount]==float("inf"):
            return -1
        else:
            return g[amount]

明天将更新力扣---最长有小括号

相关推荐

  1. 零钱兑换零钱兑换2,动态规划算法

    2024-03-23 17:34:01       44 阅读
  2. 动态规划——零钱兑换

    2024-03-23 17:34:01       37 阅读
  3. 322. 零钱兑换

    2024-03-23 17:34:01       50 阅读
  4. 动态规划 Leetcode 322 零钱兑换

    2024-03-23 17:34:01       194 阅读
  5. 动态规划】Leetcode 322. 零钱兑换【中等】

    2024-03-23 17:34:01       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-23 17:34:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-23 17:34:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-23 17:34:01       82 阅读
  4. Python语言-面向对象

    2024-03-23 17:34:01       91 阅读

热门阅读

  1. Python从入门到精通秘籍十五

    2024-03-23 17:34:01       41 阅读
  2. C语言可变参函数

    2024-03-23 17:34:01       36 阅读
  3. jquery如何请求用ajax请求假数据

    2024-03-23 17:34:01       34 阅读
  4. SQL server 里对多行数据进行循环处理

    2024-03-23 17:34:01       42 阅读
  5. MySQL内存表和临时表的区别

    2024-03-23 17:34:01       37 阅读
  6. 最大中位数(c++题解)

    2024-03-23 17:34:01       41 阅读
  7. MySQL常用的聚合函数(比较常用滴~)

    2024-03-23 17:34:01       37 阅读
  8. 哈夫曼de树

    2024-03-23 17:34:01       47 阅读
  9. 探索与利用:ε-greedy策略的魅力

    2024-03-23 17:34:01       31 阅读
  10. 5.80 BCC工具之tcpconnect.py解读

    2024-03-23 17:34:01       42 阅读