力扣 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即可

相关推荐
无敌最俊朗@12 分钟前
死锁 (Deadlock) 深度解析
算法
西阳未落32 分钟前
欧拉路径与欧拉回路
算法·深度优先
Swift社区1 小时前
LeetCode 390 消除游戏
算法·leetcode·游戏
橘颂TA2 小时前
【剑斩OFFER】优雅的解法——三数之和
算法
我爱工作&工作love我2 小时前
2024-CSP-J T3 小木棍
算法·动态规划
DatGuy2 小时前
Week 18: 深度学习补遗:Stacking和量子运算Deutsch算法
人工智能·深度学习·算法
williamdsy3 小时前
【MoonBit初探】:从一个“陷阱”到深入理解数据结构*
数据结构·map·moonbit
Nie_Xun4 小时前
ROS1 go2 vlp16 局部避障--3 篇
算法
无敌最俊朗@7 小时前
C++ 序列容器深度解析:vector、deque 与 list
开发语言·数据结构·数据库·c++·qt·list
Da Da 泓7 小时前
LinkedList模拟实现
java·开发语言·数据结构·学习·算法