C/C++教程

leetcode 零钱兑换 中等

本文主要是介绍leetcode 零钱兑换 中等,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

 

发现 coins.length 很小,而且 amount 最大为 1e4,所以完全背包 dp 即可。

像这个数一样采用 BFS 也行,但是很慢。https://leetcode-cn.com/problems/perfect-squares/

class Solution {
public:
    int coinChange(vector<int>& coins, int amount) {
        vector<int> dp(amount + 1, 0x3f3f3f3f);
        dp[0] = 0;
        for(int i = 0; i <= amount; ++ i) {
            for(int j = 0; j < coins.size(); ++ j) {
                if(i >= coins[j]) dp[i] = min(dp[i], dp[i - coins[j]] + 1);
            }
        }
        return dp.back() == 0x3f3f3f3f ? -1 : dp.back();
    }
};

 

这篇关于leetcode 零钱兑换 中等的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!