力扣 hot100 Day74

279. 完全平方数

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

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

cpp 复制代码
class Solution {
public:
    int numSquares(int n) {
        vector<int> dp(n+1, INT_MAX);
        dp[0] = 0;
        
        for(int i = 1; i <= n; ++i) {
            for(int j = 1; j*j <= i; ++j) {
                dp[i] = min(dp[i], dp[i - j*j] + 1);
            }
        }
        
        return dp[n];
    }
};

逻辑是,对于dp[i],遍历所有小于i的平方和,比较dp[i-j*j]+1与dp[i]的最小值,即可得最少数量

dp初始化为极大值,所以可以理解为dp[i]会在循环初始为dp[i-1]+1,只需要设定dp[0]=0即可

相关推荐
I_LPL3 小时前
hot100贪心专题
数据结构·算法·leetcode·贪心
颜酱3 小时前
DFS 岛屿系列题全解析
javascript·后端·算法
WolfGang0073214 小时前
代码随想录算法训练营 Day16 | 二叉树 part06
算法
2401_831824965 小时前
代码性能剖析工具
开发语言·c++·算法
Sunshine for you6 小时前
C++中的职责链模式实战
开发语言·c++·算法
qq_416018726 小时前
C++中的状态模式
开发语言·c++·算法
2401_884563246 小时前
模板代码生成工具
开发语言·c++·算法
2401_831920746 小时前
C++代码国际化支持
开发语言·c++·算法
m0_672703317 小时前
上机练习第51天
数据结构·c++·算法
ArturiaZ7 小时前
【day60】
算法·深度优先·图论