LeetCode279.Perfect-Squares<完全平方数>

题目:

LeetCode279.Perfect-Squares<完全平方数>_第1张图片

思路:

这一题和硬币那题有一点像。 (13条消息) LeetCode322.Coin-Change<零钱兑换>_Eminste的博客-CSDN博客

所以我们初始化一系列“硬币”(平方数) 然后扫描用多少个“硬币”可以组成值。

最后返回结果即可。

LeetCode279.Perfect-Squares<完全平方数>_第2张图片

 

代码是:

//code
 
class Solution {
public:
    int numSquares(int amount) {
        int coins[101]={0};
        for(int i=1;i<101;i++){
            coins[i]=i*i;
        }
        vector dp(amount + 1, amount + 1);
        dp[0] = 0;
        for (int i = 0; i < dp.size(); i++) {
            for (int coin : coins) {
                if (i - coin < 0) continue;
                dp[i] = min(dp[i], 1 + dp[i - coin]);
            }
        }
        return (dp[amount] == amount + 1) ? -1 : dp[amount];
    }
};

你可能感兴趣的:(算法,leetcode,职场和发展)