给你一个整数 n ,返回 和为 n 的完全平方数的最少数量 。
完全平方数 是一个整数,其值等于另一个整数的平方;换句话说,其值等于一个整数自乘的积。例如,1、4、9 和 16 都是完全平方数,而 3 和 11 不是
class Solution {
public:
int numSquares(int n) {
dp[i]表示数字i所需要的的完全平方数的数量
vector<int>dp(n+1,INT_MAX);
//0不需要
dp[0]=0;
//外层循环从1到n,计算每个数所需要的完全平方数数目
for(int i=1;i<=n;i++){
//遍历所有可能的完全平方数
for(int j=1;j*j<=i;j++){
//如果i可以变成i-j*j +j*j这个完全平方数
更新dp[i]
dp[i]=min(dp[i],dp[i-j*j]+1);//dp[i-j*j]表示i-j*j这个数需要的完全平方数 +j*j这一个完全平方数
}
}
//返回n所需要的完全平方数
return dp[n];
}
};
459

被折叠的 条评论
为什么被折叠?



