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 完全平方数(中等)