说实话看起来不太难 但我觉得数学方法我想不出来
然后看题解是动态规划 好巧妙!
class Solution {
public int numSquares(int n) {
int[] dp = new int[n + 1];
for(int i = 1; i <= n; i ++){
int min = Integer.MAX_VALUE;
for(int j = 1; j * j <= i; j ++){
min = Math.min(min, dp[i - j * j]);
}
dp[i] = min + 1;
}
return dp[n];
}
}