279. 完全平方数

279.完全平方数

给你一个整数 n ,返回 和为 n 的完全平方数的最少数量

完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,14916 都是完全平方数,而 311 不是。

示例 1:

输入:n = 12
输出:3 
解释:12 = 4 + 4 + 4

示例 2:

输入:n = 13
输出:2
解释:13 = 4 + 9

提示:

  • 1 <= n <= 104

解答

class Solution {
public:
    int numSquares(int n) {
        // 物品就是平方和
        // 先遍历背包后遍历物品
        // dp[i] 表示 和为 i 的完全平方数的最少数量 
        vector<int> dp(n + 1, INT_MAX);
        dp[0] = 0;
        for(int i = 1; i <= n; ++i) // 遍历背包
        {
            // 遍历物品, 求出背包大小为i时,使用最少平方和的数量
            for(int j = 1; j * j <= i; j++)
            {
                // 
                dp[i] = min(dp[i - j * j] + 1, dp[i]);
            }
        }
        return dp[n];
    }
};

你可能感兴趣的:(LeetCode错题集,算法,数据结构,leetcode)