Perfect Squares
MediumMathDynamic ProgrammingBreadth-First Search
Solution
export function numSquares(n: number): number {
const dp = new Array(n + 1).fill(Number.MAX_SAFE_INTEGER);
for (let i = 1; i <= Math.sqrt(n); i++) {
dp[i ** 2] = 1;
}
for (let i = 1; i <= n; i++) {
for (let j = 1; j <= Math.sqrt(i); j++) {
dp[i] = Math.min(dp[i], dp[i - j ** 2] + 1);
}
}
return dp[n];
}