279-perfect-squares
DevGod needs to write a blog entry for this problem!
/**
* @param {number} n
* @return {number}
*/
var numSquares = function(n) {
let memo = {1:1,2:2,3:3};
function helper(n){
if(n < 0){return Infinity;}
if(n === 0){return 0;}
if(memo[n] !== undefined){return memo[n];}
let min = Infinity;
for(let I=1; I*I<= n; I++){
let val = helper(n-(I**2));
min = Math.min(min,val+1);
}
memo[n] = min;
return memo[n];
}
return helper(n);
};