LeetCode 279 完全平方数[动态规划] HERODING的LeetCode之路

Posted HERODING23

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 279 完全平方数[动态规划] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。

在这里插入图片描述解题思路:
完全平方数问题也是动态规划中的经典题型了,与背包问题不同,背包问题中,n个物品的下标与存放最大价值无关,即不管你下标是多少,最优的形式还是看你物品的价值、重量之间的关系,物品不可以重复,所以需要二维数组(当然可以优化成一维),但是这道题目不同,平方数可以重复的,这道题和硬币题目很类似,当然你也可以理解成恰好装满w的物品,所选择的最少物品个数(等于背包问题变种,价值变成了个数,而且物品可以重复),代码如下:

class Solution {
public:
    int numSquares(int n) {
        // 定义动态规划数组
        vector<int> dp(n + 1);
        for(int i = 1; i <= n; i ++) {
            // 记录最少的个数
            int minNum = INT_MAX;
            for(int j = 1; j * j <= i; j ++) {
                // 更新最少的个数
                minNum = min(minNum, dp[i - j * j]);
            }
            dp[i] = 1 + minNum;
        }
        return dp[n];
    }
};


/*作者:heroding
链接:https://leetcode-cn.com/problems/perfect-squares/solution/cdong-tai-gui-hua-by-heroding-gfp2/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/

以上是关于LeetCode 279 完全平方数[动态规划] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97%

LeetCode279:完全平方数,动态规划解法超过46%,作弊解法却超过97%

leetcode 279. Perfect Squares 完全平方数(中等)

LeetCode 279. 完全平方数(Perfect Squares)

力扣279——完全平方数

279. 完全平方数