问题描述
给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, …)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。
题解
var numSquares = function(n) {
let dp = new Array(n+1).fill(0) // 这里必须要初始化,没有数据无法比较
for(let i=1; i<=n; i++) {
dp[i] = i
for (let j=1; i-j*j >=0; j++){
dp[i] = Math.min(dp[i], dp[i-j*j]+1) // +1的意思是,dp[i-j*j]这属于若干因数,j*j这属于一个因数
}
}
return dp[n]
};